From 46c002640b5f813ba133cdd06125243c2d6a6556 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:00:25 -0500 Subject: [PATCH 01/13] Implement closure support for captured variables Adds closure environment allocation, variable capture analysis, and code generation for accessing and storing captured variables in closures. Updates the compiler to prescan function bodies for captured variables, allocate and initialize closure environments, and handle closure function creation and invocation. Extends Flow and Function/Local classes to track closure-related metadata. Includes new tests for closure behavior. --- src/compiler.ts | 1022 +++++++++- src/flow.ts | 11 + src/program.ts | 28 + tests/compiler/closure.debug.wat | 2951 ++++++++++++++++++++++++++++ tests/compiler/closure.json | 13 - tests/compiler/closure.release.wat | 2046 +++++++++++++++++++ tests/compiler/closure.ts | 72 +- 7 files changed, 6084 insertions(+), 59 deletions(-) create mode 100644 tests/compiler/closure.debug.wat create mode 100644 tests/compiler/closure.release.wat diff --git a/src/compiler.ts b/src/compiler.ts index 36f09ab8aa..8de7c29d9e 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -174,6 +174,7 @@ import { UnaryPostfixExpression, UnaryPrefixExpression, CompiledExpression, + SwitchCase, TypeNode, NamedTypeNode, @@ -456,6 +457,8 @@ export class Compiler extends DiagnosticEmitter { functionTable: Function[] = []; /** Arguments length helper global. */ builtinArgumentsLength: GlobalRef = 0; + /** Closure environment helper global. */ + closureEnvironmentGlobal: GlobalRef = 0; /** Requires runtime features. */ runtimeFeatures: RuntimeFeatures = RuntimeFeatures.None; /** Current inline functions stack. */ @@ -1772,6 +1775,10 @@ export class Compiler extends DiagnosticEmitter { : null; let bodyStartIndex = stmts.length; + // Pre-scan the body to identify captured variables before compiling + // This ensures we know which locals need to be stored in the environment + this.prescanForClosures(bodyNode, instance, flow); + // compile statements if (bodyNode.kind == NodeKind.Block) { stmts = this.compileStatements((bodyNode).statements, stmts); @@ -1799,6 +1806,17 @@ export class Compiler extends DiagnosticEmitter { } } + // Allocate closure environment if this function has captured variables + // This is done after compiling the body because we discover captures during body compilation + if (instance.envLocal && instance.capturedLocals && instance.capturedLocals.size > 0) { + let envAlloc = this.compileClosureEnvironmentAllocation(instance); + // Insert at the beginning of the body + for (let i = stmts.length - 1; i >= bodyStartIndex; --i) { + stmts[i + 1] = stmts[i]; + } + stmts[bodyStartIndex] = envAlloc; + } + // Make constructors return their instance pointer, and prepend a conditional // allocation if any code path accesses `this`. if (instance.is(CommonFlags.Constructor)) { @@ -3208,6 +3226,33 @@ export class Compiler extends DiagnosticEmitter { flow.unsetLocalFlag(local.index, ~0); if (isConst) flow.setLocalFlag(local.index, LocalFlags.Constant); } + + // Check if this local is pre-marked as captured by a closure + let sourceFunc = flow.sourceFunction; + let preCapturedNames = sourceFunc.preCapturedNames; + if (preCapturedNames && preCapturedNames.has(name)) { + local.isCaptured = true; + // Ensure we have a closure environment for this function + if (!sourceFunc.capturedLocals) { + sourceFunc.capturedLocals = new Map(); + } + if (!sourceFunc.capturedLocals.has(local)) { + // Calculate proper byte offset based on current environment size + let currentOffset = 0; + for (let _values = Map_values(sourceFunc.capturedLocals), i = 0, k = _values.length; i < k; ++i) { + let existingLocal = _values[i]; + currentOffset += existingLocal.type.byteSize; + } + local.envSlotIndex = currentOffset; + sourceFunc.capturedLocals.set(local, local); + } + // Ensure we have an environment local + if (!sourceFunc.envLocal) { + let envLocal = flow.addScopedLocal("$env", this.options.usizeType); + sourceFunc.envLocal = envLocal; + } + } + if (initExpr) { initializers.push( this.makeLocalAssignment(local, initExpr, initType ? initType : type, false) @@ -5676,13 +5721,15 @@ export class Compiler extends DiagnosticEmitter { return this.module.unreachable(); } } else if (!(target).declaredByFlow(flow)) { - // TODO: closures - this.error( - DiagnosticCode.Not_implemented_0, - expression.range, - "Closures" - ); - return this.module.unreachable(); + // Closure: we'll handle the store later after compiling the value + if (!(target).isCaptured || (target).envSlotIndex < 0) { + this.error( + DiagnosticCode.Not_implemented_0, + expression.range, + "Closures" + ); + return this.module.unreachable(); + } } if (this.pendingElements.has(target)) { this.error( @@ -6003,6 +6050,30 @@ export class Compiler extends DiagnosticEmitter { assert(type != Type.void); let localIndex = local.index; + // Handle closure store: if the local is captured, always store to the environment + // This applies both in the declaring function and in inner closures + if (local.isCaptured && local.envSlotIndex >= 0) { + let sourceFunc = flow.sourceFunction; + // Check if we're in the declaring function (outer) or in a closure (inner) + let isInDeclaringFunction = local.parent == sourceFunc; + + // In the declaring function, we need to check if environment is set up + // In a closure, we always use the environment + if (!isInDeclaringFunction || sourceFunc.envLocal) { + let storeExpr = this.compileClosureStore(local, valueExpr, valueType); + if (tee) { + // For tee, we need to return the stored value + // Store, then load it back + let loadExpr = this.compileClosureLoad(local, local.declaration); + this.currentType = type; + return module.block(null, [storeExpr, loadExpr], type.toRef()); + } else { + this.currentType = Type.void; + return storeExpr; + } + } + } + if (type.isNullableReference) { if (!valueType.isNullableReference || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NonNull); else flow.unsetLocalFlag(localIndex, LocalFlags.NonNull); @@ -6534,6 +6605,18 @@ export class Compiler extends DiagnosticEmitter { return name; } + /** Ensures the closure environment global variable exists. */ + ensureClosureEnvironmentGlobal(): string { + let name = "$~lib/__closure_env"; + if (!this.closureEnvironmentGlobal) { + let module = this.module; + let sizeTypeRef = this.options.sizeTypeRef; + let zero = this.options.isWasm64 ? module.i64(0) : module.i32(0); + this.closureEnvironmentGlobal = module.addGlobal(name, sizeTypeRef, true, zero); + } + return name; + } + /** Ensures compilation of the varargs stub for the specified function. */ ensureVarargsStub(original: Function): Function { // A varargs stub is a function called with omitted arguments being zeroed, @@ -7100,9 +7183,41 @@ export class Compiler extends DiagnosticEmitter { ], sizeTypeRef); } if (operands) this.operandsTostack(signature, operands); + + // Load the _env field from Function object and store to global for closure access + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + let usizeSize = this.options.usizeType.byteSize; + + // Get the offset of _env in the Function class + // _index is u32 (4 bytes), _env follows at offset 4 (wasm32) or 8 (wasm64 with padding) + let envOffset = this.options.isWasm64 ? 8 : 4; + + // We need to evaluate functionArg once, store to temp, then use for both _env and _index + let flow = this.currentFlow; + let funcTemp = flow.getTempLocal(this.options.usizeType); + let funcTempIndex = funcTemp.index; + + let stmts: ExpressionRef[] = [ + // Store function pointer to temp + module.local_set(funcTempIndex, functionArg, true), + // Store _env to global: $~lib/__closure_env = func._env + module.global_set(closureEnvGlobal, + module.load(usizeSize, false, + module.local_get(funcTempIndex, sizeTypeRef), + sizeTypeRef, + envOffset + ) + ) + ]; + + let indexExpr = module.load(4, false, + module.local_get(funcTempIndex, sizeTypeRef), + TypeRef.I32 // ._index + ); + let expr = module.call_indirect( null, // TODO: handle multiple tables - module.load(4, false, functionArg, TypeRef.I32), // ._index + module.block(null, stmts.concat([indexExpr]), TypeRef.I32), operands, signature.paramRefs, signature.resultRefs @@ -7295,6 +7410,15 @@ export class Compiler extends DiagnosticEmitter { contextualTypeArguments ); instance.flow.outer = flow; + + // Analyze captured variables before compiling + let captures = this.analyzeCapturedVariables(declaration, flow); + if (captures.size > 0) { + instance.capturedLocals = captures; + instance.outerFunction = sourceFunction; + this.ensureClosureEnvironment(sourceFunction, captures, flow); + } + let worked = this.compileFunction(instance); this.currentType = contextualSignature.type; if (!worked) return module.unreachable(); @@ -7304,12 +7428,29 @@ export class Compiler extends DiagnosticEmitter { instance = this.resolver.resolveFunction(prototype, null, contextualTypeArguments); if (!instance) return this.module.unreachable(); instance.flow.outer = flow; + + // Analyze captured variables before compiling + let captures = this.analyzeCapturedVariables(declaration, flow); + if (captures.size > 0) { + instance.capturedLocals = captures; + instance.outerFunction = sourceFunction; + this.ensureClosureEnvironment(sourceFunction, captures, flow); + } + let worked = this.compileFunction(instance); this.currentType = instance.signature.type; if (!worked) return module.unreachable(); } let offset = this.ensureRuntimeFunction(instance); // reports + let sizeTypeRef = this.options.sizeTypeRef; + + // If this is a closure, we need to allocate the Function object dynamically + // and set the _env field to point to our environment + if (instance.capturedLocals && instance.capturedLocals.size > 0) { + return this.compileClosureFunctionCreation(instance, sourceFunction, offset); + } + let expr = this.options.isWasm64 ? module.i64(i64_low(offset), i64_high(offset)) : module.i32(i64_low(offset)); @@ -7343,6 +7484,844 @@ export class Compiler extends DiagnosticEmitter { return expr; } + // === Closure Support ========================================================================== + + /** Scans a node and its children for captured variables from outer scopes. */ + private scanNodeForCaptures( + node: Node, + outerFlow: Flow, + innerFunctionNames: Set, + captures: Map + ): void { + switch (node.kind) { + case NodeKind.Identifier: { + let ident = node; + let name = ident.text; + // Skip identifiers that are parameters/locals of inner functions + if (innerFunctionNames.has(name)) break; + // Check if this references a local from an outer scope + let local = outerFlow.lookupLocal(name); + if (!local) { + // Also check via outer flow chain + local = outerFlow.lookupLocalInOuter(name); + } + if (local && !captures.has(local)) { + local.isCaptured = true; + local.envSlotIndex = captures.size; + captures.set(local, local.envSlotIndex); + } + break; + } + case NodeKind.Function: { + // For nested function expressions, scan their body but add their params to inner names + let funcExpr = node; + let decl = funcExpr.declaration; + let params = decl.signature.parameters; + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + if (decl.body) { + this.scanNodeForCaptures(decl.body, outerFlow, innerFunctionNames, captures); + } + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.delete(params[i].name.text); + } + break; + } + // Expression nodes + case NodeKind.Assertion: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Binary: { + let expr = node; + this.scanNodeForCaptures(expr.left, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.right, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Call: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + let args = expr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.scanNodeForCaptures(args[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Comma: { + let expr = node; + let expressions = expr.expressions; + for (let i = 0, k = expressions.length; i < k; i++) { + this.scanNodeForCaptures(expressions[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.ElementAccess: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.elementExpression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.New: { + let expr = node; + this.scanNodeForCaptures(expr.typeName, outerFlow, innerFunctionNames, captures); + let args = expr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.scanNodeForCaptures(args[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Parenthesized: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.PropertyAccess: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Ternary: { + let expr = node; + this.scanNodeForCaptures(expr.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.ifThen, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(expr.ifElse, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.UnaryPostfix: { + let expr = node; + this.scanNodeForCaptures(expr.operand, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.UnaryPrefix: { + let expr = node; + this.scanNodeForCaptures(expr.operand, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.InstanceOf: { + let expr = node; + this.scanNodeForCaptures(expr.expression, outerFlow, innerFunctionNames, captures); + break; + } + // Statement nodes + case NodeKind.Block: { + let stmt = node; + let statements = stmt.statements; + for (let i = 0, k = statements.length; i < k; i++) { + this.scanNodeForCaptures(statements[i], outerFlow, innerFunctionNames, captures); + } + break; + } + case NodeKind.Do: { + let stmt = node; + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Expression: { + let stmt = node; + this.scanNodeForCaptures(stmt.expression, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.For: { + let stmt = node; + if (stmt.initializer) this.scanNodeForCaptures(stmt.initializer, outerFlow, innerFunctionNames, captures); + if (stmt.condition) this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + if (stmt.incrementor) this.scanNodeForCaptures(stmt.incrementor, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.ForOf: { + let stmt = node; + this.scanNodeForCaptures(stmt.variable, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.iterable, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.If: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.ifTrue, outerFlow, innerFunctionNames, captures); + if (stmt.ifFalse) this.scanNodeForCaptures(stmt.ifFalse, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Return: { + let stmt = node; + if (stmt.value) this.scanNodeForCaptures(stmt.value, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Switch: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + let cases = stmt.cases; + for (let i = 0, k = cases.length; i < k; i++) { + let case_ = cases[i]; + if (case_.label) this.scanNodeForCaptures(case_.label, outerFlow, innerFunctionNames, captures); + let stmts = case_.statements; + for (let j = 0, l = stmts.length; j < l; j++) { + this.scanNodeForCaptures(stmts[j], outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.Throw: { + let stmt = node; + this.scanNodeForCaptures(stmt.value, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Try: { + let stmt = node; + let bodyStmts = stmt.bodyStatements; + for (let i = 0, k = bodyStmts.length; i < k; i++) { + this.scanNodeForCaptures(bodyStmts[i], outerFlow, innerFunctionNames, captures); + } + if (stmt.catchStatements) { + let catchStmts = stmt.catchStatements; + for (let i = 0, k = catchStmts.length; i < k; i++) { + this.scanNodeForCaptures(catchStmts[i], outerFlow, innerFunctionNames, captures); + } + } + if (stmt.finallyStatements) { + let finallyStmts = stmt.finallyStatements; + for (let i = 0, k = finallyStmts.length; i < k; i++) { + this.scanNodeForCaptures(finallyStmts[i], outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.Variable: { + let stmt = node; + let declarations = stmt.declarations; + for (let i = 0, k = declarations.length; i < k; i++) { + let decl = declarations[i]; + // Add the variable name as a local name (not captured from outer) + innerFunctionNames.add(decl.name.text); + if (decl.initializer) { + this.scanNodeForCaptures(decl.initializer, outerFlow, innerFunctionNames, captures); + } + } + break; + } + case NodeKind.While: { + let stmt = node; + this.scanNodeForCaptures(stmt.condition, outerFlow, innerFunctionNames, captures); + this.scanNodeForCaptures(stmt.body, outerFlow, innerFunctionNames, captures); + break; + } + case NodeKind.Void: { + let stmt = node; + this.scanNodeForCaptures(stmt.expression, outerFlow, innerFunctionNames, captures); + break; + } + // Ignore other nodes (literals, this, super, etc.) + } + } + + /** Scans an array of statements for captures. */ + private scanStatementsForCaptures( + statements: Statement[], + outerFlow: Flow, + innerFunctionNames: Set, + captures: Map + ): void { + for (let i = 0, k = statements.length; i < k; i++) { + this.scanNodeForCaptures(statements[i], outerFlow, innerFunctionNames, captures); + } + } + + /** Analyzes a function expression to find captured variables from outer scopes. */ + private analyzeCapturedVariables( + declaration: FunctionDeclaration, + outerFlow: Flow + ): Map { + let captures = new Map(); + let innerFunctionNames = new Set(); + + // Add the function's own parameters to the inner names set + let params = declaration.signature.parameters; + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + + // Scan the function body + let body = declaration.body; + if (body) { + this.scanNodeForCaptures(body, outerFlow, innerFunctionNames, captures); + } + + return captures; + } + + /** Pre-scans a function body to identify all closures and their captured variables. + * This must be done before compiling the body so that local variables know they're captured. */ + private prescanForClosures( + bodyNode: Statement, + instance: Function, + flow: Flow + ): void { + // Collect all variable names declared in this function body + let declaredVars = new Map(); + this.collectDeclaredVariables(bodyNode, declaredVars); + + // Scan for function expressions in the body + this.prescanNodeForFunctionExpressions(bodyNode, instance, flow, declaredVars); + } + + /** Collects all variable declarations in a node (for prescan). */ + private collectDeclaredVariables(node: Node, vars: Map): void { + switch (node.kind) { + case NodeKind.Block: { + let block = node; + for (let i = 0, k = block.statements.length; i < k; i++) { + this.collectDeclaredVariables(block.statements[i], vars); + } + break; + } + case NodeKind.Variable: { + let varStmt = node; + for (let i = 0, k = varStmt.declarations.length; i < k; i++) { + let decl = varStmt.declarations[i]; + vars.set(decl.name.text, null); // null = type will be determined during compilation + } + break; + } + case NodeKind.If: { + let ifStmt = node; + this.collectDeclaredVariables(ifStmt.ifTrue, vars); + if (ifStmt.ifFalse) { + this.collectDeclaredVariables(ifStmt.ifFalse, vars); + } + break; + } + case NodeKind.While: { + let whileStmt = node; + this.collectDeclaredVariables(whileStmt.body, vars); + break; + } + case NodeKind.Do: { + let doStmt = node; + this.collectDeclaredVariables(doStmt.body, vars); + break; + } + case NodeKind.For: { + let forStmt = node; + if (forStmt.initializer) this.collectDeclaredVariables(forStmt.initializer, vars); + this.collectDeclaredVariables(forStmt.body, vars); + break; + } + // Function expressions don't add to outer scope + } + } + + /** Recursively scans a node for function expressions and sets up their captures. */ + private prescanNodeForFunctionExpressions( + node: Node, + instance: Function, + flow: Flow, + declaredVars: Map + ): void { + switch (node.kind) { + case NodeKind.Block: { + let block = node; + for (let i = 0, k = block.statements.length; i < k; i++) { + this.prescanNodeForFunctionExpressions(block.statements[i], instance, flow, declaredVars); + } + break; + } + case NodeKind.Expression: { + let exprStmt = node; + this.prescanNodeForFunctionExpressions(exprStmt.expression, instance, flow, declaredVars); + break; + } + case NodeKind.Return: { + let ret = node; + if (ret.value) { + this.prescanNodeForFunctionExpressions(ret.value, instance, flow, declaredVars); + } + break; + } + case NodeKind.Variable: { + let varStmt = node; + for (let i = 0, k = varStmt.declarations.length; i < k; i++) { + let decl = varStmt.declarations[i]; + if (decl.initializer) { + this.prescanNodeForFunctionExpressions(decl.initializer, instance, flow, declaredVars); + } + } + break; + } + case NodeKind.If: { + let ifStmt = node; + this.prescanNodeForFunctionExpressions(ifStmt.condition, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(ifStmt.ifTrue, instance, flow, declaredVars); + if (ifStmt.ifFalse) { + this.prescanNodeForFunctionExpressions(ifStmt.ifFalse, instance, flow, declaredVars); + } + break; + } + case NodeKind.While: { + let whileStmt = node; + this.prescanNodeForFunctionExpressions(whileStmt.condition, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(whileStmt.body, instance, flow, declaredVars); + break; + } + case NodeKind.Do: { + let doStmt = node; + this.prescanNodeForFunctionExpressions(doStmt.condition, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(doStmt.body, instance, flow, declaredVars); + break; + } + case NodeKind.For: { + let forStmt = node; + if (forStmt.initializer) this.prescanNodeForFunctionExpressions(forStmt.initializer, instance, flow, declaredVars); + if (forStmt.condition) this.prescanNodeForFunctionExpressions(forStmt.condition, instance, flow, declaredVars); + if (forStmt.incrementor) this.prescanNodeForFunctionExpressions(forStmt.incrementor, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(forStmt.body, instance, flow, declaredVars); + break; + } + case NodeKind.Function: { + // Found a function expression - analyze its captures + let funcExpr = node; + let declaration = funcExpr.declaration; + let capturedNames = this.analyzeCapturedVariablesWithDeclared(declaration, flow, instance, declaredVars); + if (capturedNames.size > 0) { + // Store captured names for later use when compiling variable declarations + let existingNames = instance.preCapturedNames; + if (!existingNames) { + instance.preCapturedNames = new Set(); + existingNames = instance.preCapturedNames; + } + for (let _keys = Map_keys(capturedNames), i = 0, k = _keys.length; i < k; i++) { + existingNames.add(_keys[i]); + } + } + // Also scan the function body for nested closures + if (declaration.body) { + // Create a temporary set of inner parameter names + let innerNames = new Set(); + let params = declaration.signature.parameters; + for (let i = 0, k = params.length; i < k; i++) { + innerNames.add(params[i].name.text); + } + // We don't recurse into nested function bodies here - that happens when the inner function is compiled + } + break; + } + case NodeKind.Binary: { + let binary = node; + this.prescanNodeForFunctionExpressions(binary.left, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(binary.right, instance, flow, declaredVars); + break; + } + case NodeKind.UnaryPrefix: { + let unary = node; + this.prescanNodeForFunctionExpressions(unary.operand, instance, flow, declaredVars); + break; + } + case NodeKind.UnaryPostfix: { + let unary = node; + this.prescanNodeForFunctionExpressions(unary.operand, instance, flow, declaredVars); + break; + } + case NodeKind.Call: { + let call = node; + this.prescanNodeForFunctionExpressions(call.expression, instance, flow, declaredVars); + let args = call.args; + for (let i = 0, k = args.length; i < k; i++) { + this.prescanNodeForFunctionExpressions(args[i], instance, flow, declaredVars); + } + break; + } + case NodeKind.Parenthesized: { + let paren = node; + this.prescanNodeForFunctionExpressions(paren.expression, instance, flow, declaredVars); + break; + } + case NodeKind.Ternary: { + let ternary = node; + this.prescanNodeForFunctionExpressions(ternary.condition, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(ternary.ifThen, instance, flow, declaredVars); + this.prescanNodeForFunctionExpressions(ternary.ifElse, instance, flow, declaredVars); + break; + } + case NodeKind.Comma: { + let comma = node; + for (let i = 0, k = comma.expressions.length; i < k; i++) { + this.prescanNodeForFunctionExpressions(comma.expressions[i], instance, flow, declaredVars); + } + break; + } + // Most other node kinds don't contain function expressions + } + } + + /** Analyzes captured variables using both flow and pre-collected variable names. */ + private analyzeCapturedVariablesWithDeclared( + declaration: FunctionDeclaration, + outerFlow: Flow, + outerFunc: Function, + declaredVars: Map + ): Map { + // For prescan, we just collect variable NAMES that are captured + // We'll create the actual captures with proper Local references later + let capturedNames = new Map(); + let innerFunctionNames = new Set(); + + // Add the function's own parameters to the inner names set + let params = declaration.signature.parameters; + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + + // Scan the function body for identifier usages + let body = declaration.body; + if (body) { + this.collectCapturedNames(body, innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + + return capturedNames; + } + + /** Collects names of variables that are captured from outer scope. */ + private collectCapturedNames( + node: Node, + innerFunctionNames: Set, + outerFlow: Flow, + declaredVars: Map, + capturedNames: Map + ): void { + switch (node.kind) { + case NodeKind.Identifier: { + let ident = node; + let name = ident.text; + // Skip if it's an inner function parameter/local + if (innerFunctionNames.has(name)) break; + // Check if it's a declared variable in outer scope OR a local in the flow + if (declaredVars.has(name) || outerFlow.lookupLocal(name)) { + capturedNames.set(name, null); + } + break; + } + case NodeKind.Block: { + let block = node; + for (let i = 0, k = block.statements.length; i < k; i++) { + this.collectCapturedNames(block.statements[i], innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } + case NodeKind.Expression: { + let exprStmt = node; + this.collectCapturedNames(exprStmt.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Return: { + let ret = node; + if (ret.value) { + this.collectCapturedNames(ret.value, innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } + case NodeKind.Binary: { + let binary = node; + this.collectCapturedNames(binary.left, innerFunctionNames, outerFlow, declaredVars, capturedNames); + this.collectCapturedNames(binary.right, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Call: { + let call = node; + this.collectCapturedNames(call.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + let args = call.args; + for (let i = 0, k = args.length; i < k; i++) { + this.collectCapturedNames(args[i], innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } + case NodeKind.If: { + let ifStmt = node; + this.collectCapturedNames(ifStmt.condition, innerFunctionNames, outerFlow, declaredVars, capturedNames); + this.collectCapturedNames(ifStmt.ifTrue, innerFunctionNames, outerFlow, declaredVars, capturedNames); + if (ifStmt.ifFalse) { + this.collectCapturedNames(ifStmt.ifFalse, innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } + // Add more cases as needed for complete coverage + default: { + // For other nodes, recursively scan children + // This is a simplified version - a complete implementation would handle all node types + } + } + } + + /** Computes the total size needed for a closure environment. */ + private computeEnvironmentSize(captures: Map): i32 { + let size = 0; + let usizeSize = this.options.usizeType.byteSize; + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + // Align each slot to the type's natural alignment (at least pointer size) + let typeSize = local.type.byteSize; + let align = typeSize < usizeSize ? usizeSize : typeSize; + size = (size + align - 1) & ~(align - 1); + local.envSlotIndex = size; // Store the byte offset as slot index + size += typeSize; + } + // Ensure total size is aligned to pointer size + size = (size + usizeSize - 1) & ~(usizeSize - 1); + return size; + } + + /** Ensures a closure environment is set up for the outer function. */ + private ensureClosureEnvironment( + outerFunc: Function, + captures: Map, + flow: Flow + ): void { + // If the outer function already has an environment, just merge the captures + if (outerFunc.envLocal) { + // Merge captures into existing environment + let existingCaptures = outerFunc.capturedLocals; + if (existingCaptures) { + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + if (!existingCaptures.has(local)) { + existingCaptures.set(local, captures.get(local)!); + } + } + } + return; + } + + // Create a new environment local for the outer function + let usizeType = this.options.usizeType; + let envLocal = flow.addScopedLocal("$env", usizeType); + outerFunc.envLocal = envLocal; + outerFunc.capturedLocals = captures; + + // Compute the environment size + this.computeEnvironmentSize(captures); + } + + /** Compiles the creation of a closure Function object with environment pointer. */ + private compileClosureFunctionCreation( + instance: Function, + outerFunc: Function, + staticOffset: i64 + ): ExpressionRef { + let module = this.module; + let program = this.program; + let options = this.options; + let sizeTypeRef = options.sizeTypeRef; + let usizeType = options.usizeType; + + // Get the Function wrapper class for this function type + let rtInstance = assert(this.resolver.resolveClass(program.functionPrototype, [instance.type])); + + // Create the Function object dynamically using __new + let classId = rtInstance.id; + let classSize = rtInstance.nextMemoryOffset; + + // Get __new function + let newInstance = program.newInstance; + assert(newInstance); + this.compileFunction(newInstance); + + // Allocate the Function object: __new(size, classId) + let allocExpr = module.call( + newInstance.internalName, + [ + options.isWasm64 ? module.i64(classSize) : module.i32(classSize), + module.i32(classId) + ], + sizeTypeRef + ); + + // Store the allocation result in a temp local + let flow = this.currentFlow; + let funcPtrLocal = flow.getTempLocal(usizeType); + flow.setLocalFlag(funcPtrLocal.index, LocalFlags.Wrapped); + + // Get the environment pointer from the outer function + let envPtrExpr: ExpressionRef; + if (outerFunc.envLocal) { + envPtrExpr = module.local_get(outerFunc.envLocal.index, sizeTypeRef); + } else { + envPtrExpr = options.isWasm64 ? module.i64(0) : module.i32(0); + } + + // Get the function table index + let tableBase = options.tableBase; + if (!tableBase) tableBase = 1; + let funcIndex = tableBase + this.functionTable.indexOf(instance); + + // Get field offsets for Function class + let indexOffset = rtInstance.offsetof("_index"); + let envOffset = rtInstance.offsetof("_env"); + + // Build the block: + // 1. Allocate Function object + // 2. Store _index + // 3. Store _env + // 4. Return pointer + let stmts: ExpressionRef[] = [ + // funcPtr = __new(size, classId) + module.local_set(funcPtrLocal.index, allocExpr, false), + // funcPtr._index = index + module.store(4, // _index is always u32 + module.local_get(funcPtrLocal.index, sizeTypeRef), + module.i32(funcIndex), + TypeRef.I32, + indexOffset + ), + // funcPtr._env = envPtr + module.store(usizeType.byteSize, + module.local_get(funcPtrLocal.index, sizeTypeRef), + envPtrExpr, + sizeTypeRef, + envOffset + ), + // Return funcPtr + module.local_get(funcPtrLocal.index, sizeTypeRef) + ]; + + this.currentType = instance.type; + + return module.block(null, stmts, sizeTypeRef); + } + + /** Gets the environment pointer for accessing a captured variable. */ + private getClosureEnvironmentPointer(capturedLocal: Local): ExpressionRef { + let module = this.module; + let flow = this.currentFlow; + let currentFunc = flow.sourceFunction; + let sizeTypeRef = this.options.sizeTypeRef; + + // Case 1: We're in the function that owns the environment + if (capturedLocal.parent == currentFunc && currentFunc.envLocal) { + return module.local_get(currentFunc.envLocal.index, sizeTypeRef); + } + + // Case 2: We're in a closure - load environment from the global + // The environment was passed via the closure's _env field and stored to global + // before the indirect call + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + return module.global_get(closureEnvGlobal, sizeTypeRef); + } + + /** Compiles loading a captured variable from the closure environment. */ + private compileClosureLoad(local: Local, expression: Expression): ExpressionRef { + let module = this.module; + let localType = local.type; + let slotOffset = local.envSlotIndex; + + // Get the environment pointer + let envPtr = this.getClosureEnvironmentPointer(local); + + // Load from the environment: load(envPtr + slotOffset) + this.currentType = localType; + return module.load( + localType.byteSize, + localType.is(TypeFlags.Signed), + envPtr, + localType.toRef(), + slotOffset + ); + } + + /** Compiles storing a value to a captured variable in the closure environment. */ + private compileClosureStore( + local: Local, + valueExpr: ExpressionRef, + valueType: Type + ): ExpressionRef { + let module = this.module; + let localType = local.type; + let slotOffset = local.envSlotIndex; + + // Get the environment pointer + let envPtr = this.getClosureEnvironmentPointer(local); + + // Store to the environment: store(envPtr + slotOffset, value) + return module.store( + localType.byteSize, + envPtr, + valueExpr, + localType.toRef(), + slotOffset + ); + } + + /** Compiles the allocation of a closure environment at function entry. */ + private compileClosureEnvironmentAllocation(instance: Function): ExpressionRef { + let module = this.module; + let program = this.program; + let options = this.options; + let sizeTypeRef = options.sizeTypeRef; + let usizeType = options.usizeType; + + let captures = assert(instance.capturedLocals); + let envLocal = assert(instance.envLocal); + + // Calculate the total size needed for the environment + let envSize = this.computeEnvironmentSize(captures); + + // Get __alloc function for raw memory allocation + let allocInstance = program.allocInstance; + assert(allocInstance); + this.compileFunction(allocInstance); + + // Allocate the environment: __alloc(size) + let allocExpr = module.call( + allocInstance.internalName, + [ + options.isWasm64 ? module.i64(envSize) : module.i32(envSize) + ], + sizeTypeRef + ); + + let stmts: ExpressionRef[] = []; + + // envLocal = __alloc(envSize) + stmts.push( + module.local_set(envLocal.index, allocExpr, false) + ); + + // Initialize captured parameters in the environment + // Parameters are already initialized, so copy them now + // Local variables (var/let) will be initialized later when they're declared + let signature = instance.signature; + let numParams = signature.parameterTypes.length; + let hasThis = signature.thisType != null; + let paramStartIndex = hasThis ? 1 : 0; + let paramEndIndex = paramStartIndex + numParams; + + for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { + let local = _keys[i]; + let slotOffset = local.envSlotIndex; + let localType = local.type; + + // Only copy if this is a parameter (index in parameter range) + // Local variables will be initialized when their declaration is compiled + if (local.index >= paramStartIndex && local.index < paramEndIndex) { + stmts.push( + module.store( + localType.byteSize, + module.local_get(envLocal.index, sizeTypeRef), + module.local_get(local.index, localType.toRef()), + localType.toRef(), + slotOffset + ) + ); + } + } + + // Mark environment as initialized + this.currentFlow.setLocalFlag(envLocal.index, LocalFlags.Initialized); + + return module.flatten(stmts, TypeRef.None); + } + /** Makes sure the enclosing source file of the specified expression has been compiled. */ private maybeCompileEnclosingSource(expression: Expression): void { let internalPath = expression.range.source.internalPath; @@ -7505,6 +8484,24 @@ export class Compiler extends DiagnosticEmitter { return this.compileInlineConstant(local, contextualType, constraints); } let localIndex = local.index; + + // Handle closure access BEFORE initialization check + // Captured variables are stored in the environment, not in flow locals + if (!local.declaredByFlow(flow)) { + // Closure: load from environment + if (local.isCaptured && local.envSlotIndex >= 0) { + this.currentType = localType; + return this.compileClosureLoad(local, expression); + } + // Not a recognized closure - error + this.error( + DiagnosticCode.Not_implemented_0, + expression.range, + "Closures" + ); + return module.unreachable(); + } + if (!flow.isLocalFlag(localIndex, LocalFlags.Initialized)) { this.error( DiagnosticCode.Variable_0_is_used_before_being_assigned, @@ -7519,15 +8516,6 @@ export class Compiler extends DiagnosticEmitter { this.currentType = localType; } - if (!local.declaredByFlow(flow)) { - // TODO: closures - this.error( - DiagnosticCode.Not_implemented_0, - expression.range, - "Closures" - ); - return module.unreachable(); - } let expr = module.local_get(localIndex, localType.toRef()); if (isNonNull && localType.isNullableExternalReference && this.options.hasFeature(Feature.GC)) { // If the local's type is nullable, but its value is known to be non-null, propagate diff --git a/src/flow.ts b/src/flow.ts index ddc7941916..9f9cd35396 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -536,6 +536,17 @@ export class Flow { return null; } + /** Looks up a local in outer function scopes (for closures). */ + lookupLocalInOuter(name: string): Local | null { + let outerFlow: Flow | null = this.outer; + while (outerFlow) { + let local = outerFlow.lookupLocal(name); + if (local) return local; + outerFlow = outerFlow.outer; + } + return null; + } + /** Looks up the element with the specified name relative to the scope of this flow. */ lookup(name: string): Element | null { let element = this.lookupLocal(name); diff --git a/src/program.ts b/src/program.ts index 8bcf1bfa19..a7a80b5563 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3628,6 +3628,12 @@ export class Local extends VariableLikeElement { /** Original name of the (temporary) local. */ private originalName: string; + /** Whether this local is captured by a closure. */ + isCaptured: bool = false; + + /** Environment slot index if captured, -1 otherwise. */ + envSlotIndex: i32 = -1; + /** Constructs a new local variable. */ constructor( /** Simple name. */ @@ -3785,6 +3791,28 @@ export class Function extends TypedElement { /** Counting id of anonymous inner functions. */ nextAnonymousId: i32 = 0; + // Closure support + + /** Set of locals from outer scopes that this function captures. Maps Local to slot index. */ + capturedLocals: Map | null = null; + + /** The environment class for this function's captured locals, if any. */ + envClass: Class | null = null; + + /** The local variable holding the environment pointer in outer function. */ + envLocal: Local | null = null; + + /** The outer function whose environment this closure accesses. */ + outerFunction: Function | null = null; + + /** Pre-scanned names of captured variables (set before compilation, used to mark locals). */ + preCapturedNames: Set | null = null; + + /** Whether this function requires an environment (is a closure). */ + get needsEnvironment(): bool { + return this.capturedLocals != null && this.capturedLocals.size > 0; + } + /** Constructs a new concrete function. */ constructor( /** Name incl. type parameters, i.e. `foo`. */ diff --git a/tests/compiler/closure.debug.wat b/tests/compiler/closure.debug.wat new file mode 100644 index 0000000000..f70f13f192 --- /dev/null +++ b/tests/compiler/closure.debug.wat @@ -0,0 +1,2951 @@ +(module + (type $0 (func (param i32 i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func)) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $closure/fn1 (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $closure/fn2 (mut i32) (i32.const 0)) + (global $closure/fn3 (mut i32) (i32.const 0)) + (global $closure/fn5 (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 720)) + (global $~lib/memory/__data_end i32 (i32.const 752)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33520)) + (global $~lib/memory/__heap_base i32 (i32.const 33520)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00c\00l\00o\00s\00u\00r\00e\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 492) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 524) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 556) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 588) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 620) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 652) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 684) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 720) "\07\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\00\00\00") + (table $0 9 9 funcref) + (elem $0 (i32.const 1) $closure/testCaptureParam~anonymous|0 $closure/testCaptureVar~anonymous|0 $closure/testCaptureLet~anonymous|0 $closure/testClosureWrite~anonymous|0 $closure/testClosureWrite~anonymous|1 $closure/testMultipleCaptures~anonymous|0 $closure/testSharedEnvironment~anonymous|0 $closure/testSharedEnvironment~anonymous|1) + (export "memory" (memory $0)) + (start $~start) + (func $closure/testCaptureParam~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + 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 $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure/testCaptureParam (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 1 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testCaptureVar~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $closure/testCaptureVar (result i32) + (local $x i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 100 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 2 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testCaptureLet~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $closure/testCaptureLet (result i32) + (local $x i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 200 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure/testClosureWrite~anonymous|0 + global.get $$~lib/__closure_env + global.get $$~lib/__closure_env + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure/testClosureWrite~anonymous|1 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $closure/testMultipleCaptures~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + global.get $$~lib/__closure_env + i32.load offset=1 + i32.add + global.get $$~lib/__closure_env + i32.load offset=2 + i32.add + ) + (func $closure/testMultipleCaptures (param $a i32) (param $b i32) (result i32) + (local $c i32) + (local $$env i32) + (local $4 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + local.get $$env + i32.const 10 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 6 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure/testSharedEnvironment~anonymous|0 (param $x i32) + global.get $$~lib/__closure_env + local.get $x + i32.store + ) + (func $closure/testSharedEnvironment~anonymous|1 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $start:closure + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + i32.const 42 + call $closure/testCaptureParam + global.set $closure/fn1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn1 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $2) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureVar + global.set $closure/fn2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn2 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $2) + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testCaptureLet + global.set $closure/fn3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn3 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + i32.const 200 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testClosureWrite + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + i32.const 2 + call $closure/testMultipleCaptures + global.set $closure/fn5 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure/fn5 + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure/testSharedEnvironment + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28i32%29=>void> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + unreachable + ) + (func $~start + call $start:closure + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 33552 + i32.const 33600 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure/testClosureWrite (result i32) + (local $counter i32) + (local $$env i32) + (local $2 i32) + (local $increment i32) + (local $4 i32) + (local $getCounter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 4 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $increment + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 5 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getCounter + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $4) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $4) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $4) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getCounter + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure/testSharedEnvironment (result i32) + (local $value i32) + (local $$env i32) + (local $2 i32) + (local $setter i32) + (local $4 i32) + (local $getter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 7 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $setter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 8 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getter + i32.store offset=4 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) +) diff --git a/tests/compiler/closure.json b/tests/compiler/closure.json index 043415b403..1bdd02b1be 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -1,17 +1,4 @@ { "asc_flags": [ - ], - "stderr": [ - "AS100: Not implemented: Closures", - "$local1; // closure 1", - "AS100: Not implemented: Closures", - "$local0; // closure 2", - "AS100: Not implemented: Closures", - "$local0; // closure 3", - "AS100: Not implemented: Closures", - "$local0(123); // closure 4", - "AS100: Not implemented: Closures", - "$local0 = 10; // closure 5", - "EOF" ] } diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat new file mode 100644 index 0000000000..39e6688990 --- /dev/null +++ b/tests/compiler/closure.release.wat @@ -0,0 +1,2046 @@ +(module + (type $0 (func (result i32))) + (type $1 (func)) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32 i32 i32 i32))) + (type $6 (func (param i32 i32 i64))) + (type $7 (func (param i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $closure/fn1 (mut i32) (i32.const 0)) + (global $closure/fn2 (mut i32) (i32.const 0)) + (global $closure/fn3 (mut i32) (i32.const 0)) + (global $closure/fn5 (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 34544)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\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 $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) ",") + (data $9.1 (i32.const 1480) "\02\00\00\00\14\00\00\00c\00l\00o\00s\00u\00r\00e\00.\00t\00s") + (data $10 (i32.const 1516) "\1c") + (data $10.1 (i32.const 1528) "\04\00\00\00\08\00\00\00\02") + (data $11 (i32.const 1548) "\1c") + (data $11.1 (i32.const 1560) "\04\00\00\00\08\00\00\00\03") + (data $12 (i32.const 1580) "\1c") + (data $12.1 (i32.const 1592) "\05\00\00\00\08\00\00\00\04") + (data $13 (i32.const 1612) "\1c") + (data $13.1 (i32.const 1624) "\04\00\00\00\08\00\00\00\05") + (data $14 (i32.const 1644) "\1c") + (data $14.1 (i32.const 1656) "\04\00\00\00\08\00\00\00\06") + (data $15 (i32.const 1676) "\1c") + (data $15.1 (i32.const 1688) "\06\00\00\00\08\00\00\00\07") + (data $16 (i32.const 1708) "\1c") + (data $16.1 (i32.const 1720) "\04\00\00\00\08\00\00\00\08") + (data $17 (i32.const 1744) "\07\00\00\00 \00\00\00 \00\00\00 ") + (table $0 9 9 funcref) + (elem $0 (i32.const 1) $closure/testCaptureParam~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testClosureWrite~anonymous|0 $closure/testCaptureParam~anonymous|0 $closure/testMultipleCaptures~anonymous|0 $closure/testSharedEnvironment~anonymous|0 $closure/testCaptureParam~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $closure/testCaptureParam~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $1 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $1 + i32.load offset=8 + local.tee $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $0 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$125 + local.get $1 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $0 + i32.eqz + if + local.get $1 + i32.load offset=8 + i32.eqz + local.get $1 + i32.const 34544 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$125 + end + local.get $1 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $1 + i32.load offset=12 + local.tee $0 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $0 + i32.const 1744 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 2 + i32.shl + i32.const 1748 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $0 + local.get $1 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (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 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + 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 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + 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 + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 34544 + i32.const 0 + i32.store + i32.const 36112 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 34544 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 34544 + i32.const 36116 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 34544 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 34544 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 34544 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 34544 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + 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 + 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 + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + 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 $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $1 + loop $do-loop|0 + local.get $1 + call $~lib/rt/itcms/step + i32.sub + local.set $1 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $1 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 24 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + local.get $0 + i32.store offset=12 + local.get $1 + i32.const 8 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $2 + i32.load offset=8 + local.set $0 + local.get $1 + local.get $2 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $0 + local.get $1 + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $1 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $1 + i32.const 20 + i32.add + local.tee $0 + i64.const 0 + i64.store align=1 + local.get $0 + ) + (func $closure/testClosureWrite~anonymous|0 + global.get $$~lib/__closure_env + global.get $$~lib/__closure_env + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure/testMultipleCaptures~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load offset=2 + global.get $$~lib/__closure_env + i32.load + global.get $$~lib/__closure_env + i32.load offset=1 + i32.add + i32.add + ) + (func $closure/testSharedEnvironment~anonymous|0 (param $0 i32) + global.get $$~lib/__closure_env + i32.const 50 + i32.store + ) + (func $start:closure + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + memory.size + i32.const 16 + i32.shl + i32.const 34544 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 1 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + global.set $closure/fn1 + global.get $~lib/memory/__stack_pointer + global.get $closure/fn1 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 6 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 100 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + global.set $closure/fn2 + global.get $~lib/memory/__stack_pointer + global.get $closure/fn2 + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 200 + i32.store + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + global.set $closure/fn3 + global.get $~lib/memory/__stack_pointer + global.get $closure/fn3 + local.tee $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 200 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 4 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 5 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 34 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.store offset=4 + local.get $0 + i32.const 2 + i32.store offset=12 + local.get $0 + i32.const 10 + i32.store offset=4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 6 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + global.set $closure/fn5 + global.get $~lib/memory/__stack_pointer + global.get $closure/fn5 + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 7 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 8 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 50 + local.get $2 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + block $folding-inner0 + block $invalid + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner0 $folding-inner0 $folding-inner0 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1776 + i32.lt_s + if + i32.const 34576 + i32.const 34624 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~start + call $start:closure + ) +) diff --git a/tests/compiler/closure.ts b/tests/compiler/closure.ts index 26ba15304b..0446ab5aa1 100644 --- a/tests/compiler/closure.ts +++ b/tests/compiler/closure.ts @@ -1,39 +1,53 @@ -function testParam($local0: i32, $local1: i32): (value: i32) => i32 { - return function inner(value: i32) { - return $local1; // closure 1 - }; +// Test 1: Basic closure capturing parameter - read +function testCaptureParam(x: i32): () => i32 { + return (): i32 => x; } -testParam(1, 2); +let fn1 = testCaptureParam(42); +assert(fn1() == 42); -function testVar(): (value: i32) => i32 { - var $local0 = 0; - return function inner(value: i32) { - return $local0; // closure 2 - }; +// Test 2: Basic closure capturing var - read +function testCaptureVar(): () => i32 { + var x = 100; + return (): i32 => x; } -testVar(); +let fn2 = testCaptureVar(); +assert(fn2() == 100); -function testLet(): (value: i32) => i32 { - let $local0 = 0; - return function inner(value: i32): i32 { - return $local0; // closure 3 - }; +// Test 3: Basic closure capturing let - read +function testCaptureLet(): () => i32 { + let x = 200; + return (): i32 => x; } -testLet(); +let fn3 = testCaptureLet(); +assert(fn3() == 200); -function testFuncParam($local0: (x: i32) => void): () => void { - return () => { - $local0(123); // closure 4 - }; +// Test 4: Closure with write - mutation affects outer scope +function testClosureWrite(): i32 { + let counter = 0; + let increment = (): void => { counter = counter + 1; }; + let getCounter = (): i32 => counter; + increment(); + increment(); + increment(); + return getCounter(); } -testFuncParam((x: i32) => {}); +assert(testClosureWrite() == 3); -function testAssign(): (value: i32) => void { - let $local0 = 0; - return function inner(value: i32): void { - $local0 = 10; // closure 5 - }; +// Test 5: Multiple captures +function testMultipleCaptures(a: i32, b: i32): () => i32 { + let c = 10; + return (): i32 => a + b + c; } -testAssign(); +let fn5 = testMultipleCaptures(1, 2); +assert(fn5() == 13); -ERROR("EOF"); +// Test 6: Two closures sharing same environment - verify reference semantics +function testSharedEnvironment(): i32 { + let value = 0; + let setter = (x: i32): void => { value = x; }; + let getter = (): i32 => value; + + setter(50); + return getter(); +} +assert(testSharedEnvironment() == 50); From 03f4b7e7f3ee9fb37a55c4617fe57646374b8b99 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Tue, 9 Dec 2025 22:22:43 -0500 Subject: [PATCH 02/13] Fix closure environment slot calculation and test coverage Corrects the calculation of environment slot offsets for captured variables in closures, ensuring proper byte offset handling and consistent environment setup. Updates test WAT files to reflect the new closure environment layout and stack management, improving correctness and coverage for closure, function expression, return, ternary, and typealias scenarios. --- src/compiler.ts | 66 ++++- tests/compiler/closure.debug.wat | 12 +- tests/compiler/closure.release.wat | 10 +- tests/compiler/function-expression.debug.wat | 235 ++++++++++++++---- .../compiler/function-expression.release.wat | 226 ++++++++++++----- tests/compiler/return.debug.wat | 33 +++ tests/compiler/return.release.wat | 64 ++++- tests/compiler/ternary.debug.wat | 48 ++++ tests/compiler/ternary.release.wat | 103 +++++--- tests/compiler/typealias.debug.wat | 17 +- tests/compiler/typealias.release.wat | 14 +- 11 files changed, 659 insertions(+), 169 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 8de7c29d9e..9ea71d224f 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1779,6 +1779,40 @@ export class Compiler extends DiagnosticEmitter { // This ensures we know which locals need to be stored in the environment this.prescanForClosures(bodyNode, instance, flow); + // Mark captured parameters and set up environment if needed + let preCapturedNames = instance.preCapturedNames; + if (preCapturedNames && preCapturedNames.size > 0) { + // Check if any parameters are captured + let parameterTypes = instance.signature.parameterTypes; + for (let i = 0, k = parameterTypes.length; i < k; i++) { + let paramName = instance.getParameterName(i); + if (preCapturedNames.has(paramName)) { + let local = flow.lookupLocal(paramName); + if (local && !local.isCaptured) { + local.isCaptured = true; + // Ensure environment structures are set up + if (!instance.capturedLocals) { + instance.capturedLocals = new Map(); + } + if (!instance.capturedLocals.has(local)) { + // Calculate proper byte offset + let currentOffset = 0; + for (let _keys = Map_keys(instance.capturedLocals), j = 0, m = _keys.length; j < m; ++j) { + let existingLocal = _keys[j]; + currentOffset += existingLocal.type.byteSize; + } + local.envSlotIndex = currentOffset; + instance.capturedLocals.set(local, local.envSlotIndex); + } + if (!instance.envLocal) { + let envLocal = flow.addScopedLocal("$env", this.options.usizeType); + instance.envLocal = envLocal; + } + } + } + } + } + // compile statements if (bodyNode.kind == NodeKind.Block) { stmts = this.compileStatements((bodyNode).statements, stmts); @@ -3239,12 +3273,12 @@ export class Compiler extends DiagnosticEmitter { if (!sourceFunc.capturedLocals.has(local)) { // Calculate proper byte offset based on current environment size let currentOffset = 0; - for (let _values = Map_values(sourceFunc.capturedLocals), i = 0, k = _values.length; i < k; ++i) { - let existingLocal = _values[i]; + for (let _keys = Map_keys(sourceFunc.capturedLocals), i = 0, k = _keys.length; i < k; ++i) { + let existingLocal = _keys[i]; currentOffset += existingLocal.type.byteSize; } local.envSlotIndex = currentOffset; - sourceFunc.capturedLocals.set(local, local); + sourceFunc.capturedLocals.set(local, local.envSlotIndex); } // Ensure we have an environment local if (!sourceFunc.envLocal) { @@ -7507,7 +7541,13 @@ export class Compiler extends DiagnosticEmitter { } if (local && !captures.has(local)) { local.isCaptured = true; - local.envSlotIndex = captures.size; + // Calculate proper byte offset based on existing captures + let currentOffset = 0; + for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + currentOffset += existingLocal.type.byteSize; + } + local.envSlotIndex = currentOffset; captures.set(local, local.envSlotIndex); } break; @@ -7810,7 +7850,10 @@ export class Compiler extends DiagnosticEmitter { this.collectDeclaredVariables(forStmt.body, vars); break; } - // Function expressions don't add to outer scope + case NodeKind.FunctionDeclaration: + case NodeKind.Function: + // Function declarations and expressions don't add their variables to outer scope + break; } } @@ -8022,6 +8065,19 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.Variable: { + // Add declared variables to inner names so they're not considered captures + let varStmt = node; + for (let i = 0, k = varStmt.declarations.length; i < k; i++) { + let decl = varStmt.declarations[i]; + innerFunctionNames.add(decl.name.text); + // Scan initializers for captures + if (decl.initializer) { + this.collectCapturedNames(decl.initializer, innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + } + break; + } case NodeKind.Binary: { let binary = node; this.collectCapturedNames(binary.left, innerFunctionNames, outerFlow, declaredVars, capturedNames); diff --git a/tests/compiler/closure.debug.wat b/tests/compiler/closure.debug.wat index f70f13f192..17e795c49d 100644 --- a/tests/compiler/closure.debug.wat +++ b/tests/compiler/closure.debug.wat @@ -2352,28 +2352,28 @@ global.get $$~lib/__closure_env i32.load global.get $$~lib/__closure_env - i32.load offset=1 + i32.load offset=4 i32.add global.get $$~lib/__closure_env - i32.load offset=2 + i32.load offset=8 i32.add ) (func $closure/testMultipleCaptures (param $a i32) (param $b i32) (result i32) - (local $c i32) (local $$env i32) + (local $c i32) (local $4 i32) i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env local.get $a - i32.store offset=4 + i32.store local.get $$env local.get $b - i32.store offset=8 + i32.store offset=4 local.get $$env i32.const 10 - i32.store + i32.store offset=8 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat index 39e6688990..dc9648296d 100644 --- a/tests/compiler/closure.release.wat +++ b/tests/compiler/closure.release.wat @@ -1549,11 +1549,11 @@ ) (func $closure/testMultipleCaptures~anonymous|0 (result i32) global.get $$~lib/__closure_env - i32.load offset=2 + i32.load offset=8 global.get $$~lib/__closure_env i32.load global.get $$~lib/__closure_env - i32.load offset=1 + i32.load offset=4 i32.add i32.add ) @@ -1853,13 +1853,13 @@ i32.add local.tee $1 i32.const 1 - i32.store offset=4 + i32.store local.get $0 i32.const 2 - i32.store offset=12 + i32.store offset=8 local.get $0 i32.const 10 - i32.store offset=4 + i32.store offset=12 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 diff --git a/tests/compiler/function-expression.debug.wat b/tests/compiler/function-expression.debug.wat index 4564289ea6..8f021dc6a7 100644 --- a/tests/compiler/function-expression.debug.wat +++ b/tests/compiler/function-expression.debug.wat @@ -11,6 +11,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-expression/f1 (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-expression/f2 (mut i32) (i32.const 128)) (global $function-expression/f3 (mut i32) (i32.const 160)) (global $function-expression/f4 (mut i32) (i32.const 192)) @@ -86,16 +87,6 @@ local.get $b i32.add ) - (func $function-expression/testOmitted (param $fn i32) (result i32) - i32.const 1 - i32.const 2 - i32.const 2 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $2) - return - ) (func $start:function-expression~anonymous|5 (param $a i32) (param $$1 i32) (result i32) local.get $a ) @@ -147,26 +138,45 @@ ) (func $function-expression/testGlobal (local $0 i32) + (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.store offset=8 i32.const 1 global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/globalFunc - i32.load - call_indirect (type $3) local.tee $0 i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $3) + local.tee $1 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - local.get $0 + local.get $1 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) i32.const 25 @@ -181,7 +191,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -194,8 +204,10 @@ (func $function-expression/testLocal (local $localFunc i32) (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -203,21 +215,38 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 544 local.tee $localFunc i32.store i32.const 1 global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $localFunc - i32.load - call_indirect (type $3) local.tee $1 i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + local.tee $2 + i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $2 + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $0) i32.const 25 @@ -232,7 +261,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -2780,46 +2809,60 @@ (local $fieldInst i32) (local $1 i32) (local $2 i32) + (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 1008 - local.set $2 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store - local.get $2 + local.get $4 call $function-expression/FieldClass#constructor local.tee $fieldInst i32.store offset=4 i32.const 1 global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fieldInst - local.set $2 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store - local.get $2 + local.get $4 call $function-expression/FieldClass#get:fieldFunc - i32.load - call_indirect (type $3) local.tee $1 i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + local.tee $2 + i32.store offset=12 i32.const 1 global.set $~argumentsLength - local.get $1 + local.get $2 + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $0) i32.const 25 @@ -2834,24 +2877,39 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) (func $start:function-expression (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 32 + memory.fill i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $function-expression/f1 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $0) i32.const 1 @@ -2866,9 +2924,16 @@ unreachable end i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $function-expression/f2 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) i32.const 2 @@ -2882,14 +2947,28 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/f3 + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $4) + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/f4 + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $3) i32.const 1 @@ -2904,11 +2983,11 @@ unreachable end i32.const 224 - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $7 + i32.store offset=16 + local.get $7 call $function-expression/testOmitted i32.const 3 i32.eq @@ -2922,11 +3001,11 @@ unreachable end i32.const 256 - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $7 + i32.store offset=16 + local.get $7 call $function-expression/testOmitted i32.const 1 i32.eq @@ -2940,11 +3019,11 @@ unreachable end i32.const 288 - local.set $0 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $7 + i32.store offset=16 + local.get $7 call $function-expression/testOmitted i32.const 42 i32.eq @@ -2959,9 +3038,16 @@ end i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn1 + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $2) i32.const 3 @@ -2977,9 +3063,16 @@ end i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn2 + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $2) i32.const 1 @@ -2995,9 +3088,16 @@ end i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn3 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $2) i32.const 42 @@ -3046,7 +3146,7 @@ call $function-expression/testField call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer ) @@ -3170,6 +3270,39 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $function-expression/testOmitted (param $fn i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + i32.const 2 + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $fn + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $2) + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) (func $start:function-expression~anonymous|7 (result i32) (local $myFunc i32) (local $1 i32) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index b3f4027a8c..088eba8e2d 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (result i32))) - (type $1 (func (param i32 i32) (result i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func)) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32 i32) (result i32))) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) @@ -166,7 +166,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$133 + block $__inlined_func$~lib/rt/itcms/Object#unlink$131 local.get $0 i32.load offset=4 i32.const -4 @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$133 + br $__inlined_func$~lib/rt/itcms/Object#unlink$131 end local.get $0 i32.load offset=8 @@ -1530,7 +1530,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 32 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -1540,11 +1540,18 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.store + i32.const 1060 + i32.load + drop i32.const 1 i32.const 1056 i32.load - call_indirect (type $2) + call_indirect (type $1) i32.const 1 i32.ne if @@ -1555,10 +1562,16 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store offset=4 + i32.const 1156 + i32.load + drop i32.const 2 i32.const 1152 i32.load - call_indirect (type $2) + call_indirect (type $1) i32.const 2 i32.ne if @@ -1569,9 +1582,21 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer i32.const 1184 + i32.store offset=8 + i32.const 1188 i32.load - call_indirect (type $3) + drop + i32.const 1184 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=12 + i32.const 1220 + i32.load + drop i32.const 1216 i32.load call_indirect (type $0) @@ -1587,12 +1612,9 @@ end global.get $~lib/memory/__stack_pointer i32.const 1248 - i32.store - i32.const 1 - i32.const 2 + i32.store offset=16 i32.const 1248 - i32.load - call_indirect (type $1) + call $function-expression/testOmitted i32.const 3 i32.ne if @@ -1605,12 +1627,9 @@ end global.get $~lib/memory/__stack_pointer i32.const 1280 - i32.store - i32.const 1 - i32.const 2 + i32.store offset=16 i32.const 1280 - i32.load - call_indirect (type $1) + call $function-expression/testOmitted i32.const 1 i32.ne if @@ -1623,12 +1642,9 @@ end global.get $~lib/memory/__stack_pointer i32.const 1312 - i32.store - i32.const 1 - i32.const 2 + i32.store offset=16 i32.const 1312 - i32.load - call_indirect (type $1) + call $function-expression/testOmitted i32.const 42 i32.ne if @@ -1639,11 +1655,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1344 + i32.store offset=20 + i32.const 1348 + i32.load + drop i32.const 1 i32.const 2 i32.const 1344 i32.load - call_indirect (type $1) + call_indirect (type $3) i32.const 3 i32.ne if @@ -1654,11 +1676,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1376 + i32.store offset=24 + i32.const 1380 + i32.load + drop i32.const 1 i32.const 2 i32.const 1376 i32.load - call_indirect (type $1) + call_indirect (type $3) i32.const 1 i32.ne if @@ -1669,11 +1697,17 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1408 + i32.store offset=28 + i32.const 1412 + i32.load + drop i32.const 1 i32.const 2 i32.const 1408 i32.load - call_indirect (type $1) + call_indirect (type $3) i32.const 42 i32.ne if @@ -1685,7 +1719,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1693,18 +1727,33 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1504 i32.store + i32.const 1508 + i32.load + drop global.get $~lib/memory/__stack_pointer i32.const 1504 i32.load call_indirect (type $0) - local.tee $0 - i32.store + local.tee $1 + i32.store offset=4 + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + drop i32.const 1 - local.get $0 + local.get $1 i32.load - call_indirect (type $2) + call_indirect (type $1) i32.const 25 i32.ne if @@ -1716,11 +1765,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1731,18 +1780,33 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 1568 i32.store global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1568 + i32.store offset=4 + i32.const 1572 + i32.load + drop + global.get $~lib/memory/__stack_pointer i32.const 1568 i32.load call_indirect (type $0) - local.tee $0 - i32.store offset=4 + local.tee $1 + i32.store offset=8 + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 - local.get $0 + local.get $1 i32.load - call_indirect (type $2) + call_indirect (type $1) i32.const 25 i32.ne if @@ -1754,7 +1818,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer memory.size @@ -1790,7 +1854,7 @@ i32.const 1888 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1798,11 +1862,9 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2032 @@ -1823,18 +1885,18 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 2032 i32.store offset=8 - local.get $1 + local.get $2 i32.const 2032 i32.store - local.get $1 + local.get $2 i32.eqz if i32.const 0 @@ -1851,7 +1913,7 @@ i32.and i32.eq if - local.get $1 + local.get $2 i32.const 20 i32.sub i32.load offset=4 @@ -1882,22 +1944,35 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/memory/__stack_pointer + local.get $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.load + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + drop + global.get $~lib/memory/__stack_pointer + local.get $1 i32.load call_indirect (type $0) - local.tee $0 - i32.store offset=8 + local.tee $1 + i32.store offset=12 + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + drop i32.const 1 - local.get $0 + local.get $1 i32.load - call_indirect (type $2) + call_indirect (type $1) i32.const 25 i32.ne if @@ -1909,12 +1984,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 32 i32.add global.set $~lib/memory/__stack_pointer return @@ -1926,6 +2001,41 @@ call $~lib/builtins/abort unreachable ) + (func $function-expression/testOmitted (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2156 + i32.lt_s + if + i32.const 34944 + i32.const 34992 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + drop + i32.const 1 + i32.const 2 + local.get $0 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $start:function-expression~anonymous|7 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/return.debug.wat b/tests/compiler/return.debug.wat index 3a0fe739ab..27eade2510 100644 --- a/tests/compiler/return.debug.wat +++ b/tests/compiler/return.debug.wat @@ -5,6 +5,7 @@ (type $3 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) @@ -22,20 +23,52 @@ call $return/nop ) (func $return/testVoidReturnFunction (param $cond i32) (param $fn i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store local.get $cond if + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return end + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer return ) (func $return/testVoidReturn (param $cond i32) diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat index 4509ebf226..801756e86a 100644 --- a/tests/compiler/return.release.wat +++ b/tests/compiler/return.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32 i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (param i32))) + (type $3 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) (memory $0 1) @@ -16,6 +16,56 @@ (start $~start) (func $start:return~anonymous|0 ) + (func $return/testVoidReturnFunction (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load offset=4 + drop + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) (func $return/testVoidReturn (param $0 i32) ) (func $~start @@ -40,9 +90,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store + i32.const 1 i32.const 1056 - i32.load - call_indirect (type $0) + call $return/testVoidReturnFunction global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -67,9 +117,9 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store + local.get $0 local.get $1 - i32.load - call_indirect (type $0) + call $return/testVoidReturnFunction global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/ternary.debug.wat b/tests/compiler/ternary.debug.wat index 91a380b1f5..0eec633c62 100644 --- a/tests/compiler/ternary.debug.wat +++ b/tests/compiler/ternary.debug.wat @@ -7,6 +7,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $ternary/a (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) @@ -73,25 +74,61 @@ global.set $~lib/memory/__stack_pointer ) (func $ternary/testVoidInclTypeMismatch (param $cond i32) (param $nop i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $cond if + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) else + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $0) end local.get $cond if + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) else @@ -103,12 +140,23 @@ i32.const 1 drop else + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop + local.tee $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start call $start:ternary diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat index fda76df259..d54aca92a8 100644 --- a/tests/compiler/ternary.release.wat +++ b/tests/compiler/ternary.release.wat @@ -52,39 +52,84 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load - call_indirect (type $0) - local.get $0 - if + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer local.get $1 - i32.load - call_indirect (type $0) - end - local.get $0 - i32.eqz - if + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + end + local.get $1 + i32.load offset=4 + drop local.get $1 i32.load call_indirect (type $0) + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + drop + local.get $1 + i32.load + call_indirect (type $0) + end + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop + local.get $1 + i32.load + call_indirect (type $0) + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/typealias.debug.wat b/tests/compiler/typealias.debug.wat index a32c177783..3233976073 100644 --- a/tests/compiler/typealias.debug.wat +++ b/tests/compiler/typealias.debug.wat @@ -10,6 +10,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 156)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32924)) (global $~lib/memory/__heap_base i32 (i32.const 32924)) @@ -160,14 +161,15 @@ (func $typealias/outer_function (local $alias i64) (local $inner_function i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i64.const 1 local.set $alias i32.const 32 @@ -188,13 +190,20 @@ i32.store local.get $inner_function drop + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $inner_function + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat index 997ab9cfcc..87f8c9c484 100644 --- a/tests/compiler/typealias.release.wat +++ b/tests/compiler/typealias.release.wat @@ -38,7 +38,7 @@ ) (func $~start global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -53,8 +53,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -70,11 +70,17 @@ global.get $~lib/memory/__stack_pointer i32.const 1168 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 + i32.const 1172 + i32.load + drop i32.const 1168 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) From e333207cec390ac7ac3f4a03a763316e63fcdb8b Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Tue, 9 Dec 2025 23:34:07 -0500 Subject: [PATCH 03/13] Improve closure environment handling and alignment Enhances closure support by properly aligning captured local offsets, caching the closure environment pointer in a local to prevent overwrites from indirect calls, and updating environment size calculations. Also adds comprehensive AST node coverage for captured variable analysis and updates related tests to reflect the new closure environment management. --- src/compiler.ts | 176 +- src/program.ts | 4 + tests/compiler/assert-nonnull.debug.wat | 122 +- tests/compiler/assert-nonnull.release.wat | 59 +- tests/compiler/builtins.debug.wat | 140 +- tests/compiler/builtins.release.wat | 27 +- tests/compiler/call-optional.debug.wat | 53 + tests/compiler/call-optional.release.wat | 44 + tests/compiler/call-rest.debug.wat | 124 +- tests/compiler/call-rest.release.wat | 37 +- .../compiler/class-static-function.debug.wat | 44 +- .../class-static-function.release.wat | 71 +- tests/compiler/closure-stress.debug.wat | 11036 ++++++++++++++++ tests/compiler/closure-stress.json | 4 + tests/compiler/closure-stress.release.wat | 8444 ++++++++++++ tests/compiler/closure-stress.ts | 616 + tests/compiler/closure.debug.wat | 30 +- tests/compiler/closure.release.wat | 10 +- tests/compiler/function-call.debug.wat | 88 +- tests/compiler/function-call.release.wat | 64 +- tests/compiler/function-types.debug.wat | 191 +- tests/compiler/function-types.release.wat | 104 +- tests/compiler/getter-call.debug.wat | 26 +- tests/compiler/getter-call.release.wat | 13 +- tests/compiler/infer-generic.debug.wat | 46 +- tests/compiler/infer-generic.release.wat | 41 +- tests/compiler/inlining.debug.wat | 40 +- tests/compiler/inlining.release.wat | 17 +- tests/compiler/issues/2707.debug.wat | 23 +- tests/compiler/issues/2707.release.wat | 14 +- .../resolve-function-expression.debug.wat | 44 +- .../resolve-function-expression.release.wat | 29 +- tests/compiler/resolve-ternary.debug.wat | 48 +- tests/compiler/resolve-ternary.release.wat | 29 +- tests/compiler/std/array-access.debug.wat | 27 +- tests/compiler/std/array-access.release.wat | 15 +- tests/compiler/std/array.debug.wat | 5355 +++++--- tests/compiler/std/array.release.wat | 3150 +++-- tests/compiler/std/staticarray.debug.wat | 925 +- tests/compiler/std/staticarray.release.wat | 729 +- tests/compiler/std/typedarray.debug.wat | 9797 ++++++++------ tests/compiler/std/typedarray.release.wat | 7158 ++++++---- 42 files changed, 38175 insertions(+), 10839 deletions(-) create mode 100644 tests/compiler/closure-stress.debug.wat create mode 100644 tests/compiler/closure-stress.json create mode 100644 tests/compiler/closure-stress.release.wat create mode 100644 tests/compiler/closure-stress.ts diff --git a/src/compiler.ts b/src/compiler.ts index 9ea71d224f..a8a0396dc0 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1795,12 +1795,17 @@ export class Compiler extends DiagnosticEmitter { instance.capturedLocals = new Map(); } if (!instance.capturedLocals.has(local)) { - // Calculate proper byte offset + // Calculate proper byte offset with alignment let currentOffset = 0; for (let _keys = Map_keys(instance.capturedLocals), j = 0, m = _keys.length; j < m; ++j) { let existingLocal = _keys[j]; - currentOffset += existingLocal.type.byteSize; + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; } + // Align to the type's natural alignment + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); local.envSlotIndex = currentOffset; instance.capturedLocals.set(local, local.envSlotIndex); } @@ -1813,6 +1818,14 @@ export class Compiler extends DiagnosticEmitter { } } + // For closures (functions that capture from outer scope), create a local to cache + // the environment pointer. This is needed because indirect calls to other closures + // can overwrite the global $$~lib/__closure_env. + if (instance.outerFunction && !instance.closureEnvLocal) { + let closureEnvLocal = flow.addScopedLocal("$closureEnv", this.options.usizeType); + instance.closureEnvLocal = closureEnvLocal; + } + // compile statements if (bodyNode.kind == NodeKind.Block) { stmts = this.compileStatements((bodyNode).statements, stmts); @@ -1851,6 +1864,27 @@ export class Compiler extends DiagnosticEmitter { stmts[bodyStartIndex] = envAlloc; } + // For closures (functions that capture from outer scope), emit code to cache the + // environment pointer in a local at function entry. This is needed because indirect + // calls to other closures can overwrite the global $$~lib/__closure_env. + if (instance.closureEnvLocal) { + let closureEnvLocal = instance.closureEnvLocal; + + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + let sizeTypeRef = this.options.sizeTypeRef; + let cacheEnv = module.local_set( + closureEnvLocal.index, + module.global_get(closureEnvGlobal, sizeTypeRef), + false // not a reference type + ); + + // Insert at the beginning of the body + for (let i = stmts.length - 1; i >= bodyStartIndex; --i) { + stmts[i + 1] = stmts[i]; + } + stmts[bodyStartIndex] = cacheEnv; + } + // Make constructors return their instance pointer, and prepend a conditional // allocation if any code path accesses `this`. if (instance.is(CommonFlags.Constructor)) { @@ -3271,12 +3305,17 @@ export class Compiler extends DiagnosticEmitter { sourceFunc.capturedLocals = new Map(); } if (!sourceFunc.capturedLocals.has(local)) { - // Calculate proper byte offset based on current environment size + // Calculate proper byte offset based on current environment size with alignment let currentOffset = 0; for (let _keys = Map_keys(sourceFunc.capturedLocals), i = 0, k = _keys.length; i < k; ++i) { let existingLocal = _keys[i]; - currentOffset += existingLocal.type.byteSize; + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; } + // Align to the type's natural alignment + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); local.envSlotIndex = currentOffset; sourceFunc.capturedLocals.set(local, local.envSlotIndex); } @@ -6094,6 +6133,16 @@ export class Compiler extends DiagnosticEmitter { // In the declaring function, we need to check if environment is set up // In a closure, we always use the environment if (!isInDeclaringFunction || sourceFunc.envLocal) { + // Mark the local as initialized for flow analysis + flow.setLocalFlag(localIndex, LocalFlags.Initialized); + if (type.isNullableReference) { + if (!valueType.isNullableReference || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NonNull); + else flow.unsetLocalFlag(localIndex, LocalFlags.NonNull); + } + if (type.isShortIntegerValue) { + if (!flow.canOverflow(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.Wrapped); + else flow.unsetLocalFlag(localIndex, LocalFlags.Wrapped); + } let storeExpr = this.compileClosureStore(local, valueExpr, valueType); if (tee) { // For tee, we need to return the stored value @@ -7541,14 +7590,26 @@ export class Compiler extends DiagnosticEmitter { } if (local && !captures.has(local)) { local.isCaptured = true; - // Calculate proper byte offset based on existing captures - let currentOffset = 0; - for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { - let existingLocal = _keys[idx]; - currentOffset += existingLocal.type.byteSize; + // If envSlotIndex is already set (from variable declaration), use it + if (local.envSlotIndex >= 0) { + captures.set(local, local.envSlotIndex); + } else { + // Calculate proper byte offset based on existing captures with alignment + // We need to compute the end of the last capture (including its size) + let currentOffset = 0; + for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + // The slot index already accounts for alignment, add the size to get next free offset + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + // Align to the type's natural alignment + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); + local.envSlotIndex = currentOffset; + captures.set(local, local.envSlotIndex); } - local.envSlotIndex = currentOffset; - captures.set(local, local.envSlotIndex); } break; } @@ -8102,6 +8163,64 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.ElementAccess: { + let elemAccess = node; + this.collectCapturedNames(elemAccess.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + this.collectCapturedNames(elemAccess.elementExpression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.PropertyAccess: { + let propAccess = node; + this.collectCapturedNames(propAccess.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Parenthesized: { + let paren = node; + this.collectCapturedNames(paren.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.UnaryPrefix: { + let unary = node; + this.collectCapturedNames(unary.operand, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.UnaryPostfix: { + let unary = node; + this.collectCapturedNames(unary.operand, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Ternary: { + let ternary = node; + this.collectCapturedNames(ternary.condition, innerFunctionNames, outerFlow, declaredVars, capturedNames); + this.collectCapturedNames(ternary.ifThen, innerFunctionNames, outerFlow, declaredVars, capturedNames); + this.collectCapturedNames(ternary.ifElse, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Assertion: { + let assertion = node; + this.collectCapturedNames(assertion.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.New: { + let newExpr = node; + let args = newExpr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.collectCapturedNames(args[i], innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } + case NodeKind.InstanceOf: { + let instanceOf = node; + this.collectCapturedNames(instanceOf.expression, innerFunctionNames, outerFlow, declaredVars, capturedNames); + break; + } + case NodeKind.Comma: { + let comma = node; + for (let i = 0, k = comma.expressions.length; i < k; i++) { + this.collectCapturedNames(comma.expressions[i], innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + break; + } // Add more cases as needed for complete coverage default: { // For other nodes, recursively scan children @@ -8112,19 +8231,17 @@ export class Compiler extends DiagnosticEmitter { /** Computes the total size needed for a closure environment. */ private computeEnvironmentSize(captures: Map): i32 { - let size = 0; - let usizeSize = this.options.usizeType.byteSize; + // Calculate the total size based on already-assigned slot indices + // The envSlotIndex values were already assigned during capture analysis + let maxEnd = 0; for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { let local = _keys[i]; - // Align each slot to the type's natural alignment (at least pointer size) - let typeSize = local.type.byteSize; - let align = typeSize < usizeSize ? usizeSize : typeSize; - size = (size + align - 1) & ~(align - 1); - local.envSlotIndex = size; // Store the byte offset as slot index - size += typeSize; + let endOfSlot = local.envSlotIndex + local.type.byteSize; + if (endOfSlot > maxEnd) maxEnd = endOfSlot; } // Ensure total size is aligned to pointer size - size = (size + usizeSize - 1) & ~(usizeSize - 1); + let usizeSize = this.options.usizeType.byteSize; + let size = (maxEnd + usizeSize - 1) & ~(usizeSize - 1); return size; } @@ -8258,9 +8375,15 @@ export class Compiler extends DiagnosticEmitter { return module.local_get(currentFunc.envLocal.index, sizeTypeRef); } - // Case 2: We're in a closure - load environment from the global + // Case 2: We're in a closure - use the cached local if available // The environment was passed via the closure's _env field and stored to global - // before the indirect call + // before the indirect call. We cache it in a local at function entry because + // nested indirect calls can overwrite the global. + if (currentFunc.closureEnvLocal) { + return module.local_get(currentFunc.closureEnvLocal.index, sizeTypeRef); + } + + // Case 3: Fallback to global (shouldn't normally happen for closures) let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); return module.global_get(closureEnvGlobal, sizeTypeRef); } @@ -8544,7 +8667,7 @@ export class Compiler extends DiagnosticEmitter { // Handle closure access BEFORE initialization check // Captured variables are stored in the environment, not in flow locals if (!local.declaredByFlow(flow)) { - // Closure: load from environment + // Closure: load from environment (from inner function) if (local.isCaptured && local.envSlotIndex >= 0) { this.currentType = localType; return this.compileClosureLoad(local, expression); @@ -8557,6 +8680,13 @@ export class Compiler extends DiagnosticEmitter { ); return module.unreachable(); } + // Also handle captured locals in the declaring function + // When a local is captured, its value lives in the environment + let sourceFunc = flow.sourceFunction; + if (local.isCaptured && local.envSlotIndex >= 0 && sourceFunc.envLocal) { + this.currentType = localType; + return this.compileClosureLoad(local, expression); + } if (!flow.isLocalFlag(localIndex, LocalFlags.Initialized)) { this.error( diff --git a/src/program.ts b/src/program.ts index a7a80b5563..1ca18d1f0a 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3805,6 +3805,10 @@ export class Function extends TypedElement { /** The outer function whose environment this closure accesses. */ outerFunction: Function | null = null; + /** Local variable in a closure function that caches the environment pointer from the global. + * This is needed because indirect calls can overwrite the global. */ + closureEnvLocal: Local | null = null; + /** Pre-scanned names of captured variables (set before compilation, used to mark locals). */ preCapturedNames: Set | null = null; diff --git a/tests/compiler/assert-nonnull.debug.wat b/tests/compiler/assert-nonnull.debug.wat index 1edc6edeed..f1a97febc8 100644 --- a/tests/compiler/assert-nonnull.debug.wat +++ b/tests/compiler/assert-nonnull.debug.wat @@ -9,6 +9,7 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 444)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) (global $~lib/memory/__heap_base i32 (i32.const 33212)) @@ -515,23 +516,28 @@ (func $assert-nonnull/testObjFn (param $foo i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $foo - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $3 i32.store - local.get $2 + local.get $3 call $assert-nonnull/Foo#get:baz local.tee $1 i32.store offset=4 @@ -546,22 +552,29 @@ call $~lib/builtins/abort unreachable end + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $1) - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return ) (func $assert-nonnull/testObjRet (param $foo i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -569,18 +582,19 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $foo - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 call $assert-nonnull/Foo#get:baz local.tee $1 i32.store offset=4 @@ -595,13 +609,19 @@ call $~lib/builtins/abort unreachable end - i32.load - call_indirect (type $1) local.tee $2 i32.store offset=8 local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + local.tee $3 + i32.store offset=12 + local.get $3 if (result i32) - local.get $2 + local.get $3 else i32.const 32 i32.const 160 @@ -610,12 +630,12 @@ call $~lib/builtins/abort unreachable end - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) (func $assert-nonnull/testVar (param $n i32) (result i32) @@ -655,14 +675,16 @@ (func $assert-nonnull/testFn (param $fn i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer @@ -680,22 +702,29 @@ call $~lib/builtins/abort unreachable end + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $1) - local.set $2 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $3 return ) (func $assert-nonnull/testFn2 (param $fn i32) (result i32) (local $1 i32) (local $fn2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -703,6 +732,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $fn local.tee $1 @@ -720,25 +752,33 @@ end local.tee $fn2 i32.store offset=4 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn2 + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $1) - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) (func $assert-nonnull/testRet (param $fn i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -747,6 +787,10 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $fn @@ -763,13 +807,19 @@ call $~lib/builtins/abort unreachable end - i32.load - call_indirect (type $1) local.tee $2 i32.store offset=4 local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + local.tee $3 + i32.store offset=8 + local.get $3 if (result i32) - local.get $2 + local.get $3 else i32.const 32 i32.const 160 @@ -778,12 +828,12 @@ call $~lib/builtins/abort unreachable end - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) (func $export:assert-nonnull/testVar (param $0 i32) (result i32) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat index 67f4405bc2..3a4a293ea4 100644 --- a/tests/compiler/assert-nonnull.release.wat +++ b/tests/compiler/assert-nonnull.release.wat @@ -578,6 +578,7 @@ unreachable ) (func $export:assert-nonnull/testFn (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -591,7 +592,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -599,11 +600,12 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store + global.get $~lib/memory/__stack_pointer local.get $0 i32.eqz if @@ -615,6 +617,11 @@ unreachable end local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + drop + local.get $0 i32.load call_indirect (type $1) unreachable @@ -641,7 +648,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -652,6 +659,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -667,6 +677,12 @@ end local.get $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + drop local.get $0 i32.load call_indirect (type $1) @@ -694,7 +710,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -705,11 +721,20 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + drop local.get $0 i32.load call_indirect (type $1) @@ -730,6 +755,7 @@ unreachable ) (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) + (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -743,7 +769,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -754,6 +780,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -761,6 +790,7 @@ i32.load offset=4 local.tee $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $0 i32.eqz if @@ -772,6 +802,11 @@ unreachable end local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + drop + local.get $0 i32.load call_indirect (type $1) unreachable @@ -798,7 +833,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -809,8 +844,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -822,6 +857,12 @@ local.get $0 i32.eqz br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + drop local.get $0 i32.load call_indirect (type $1) diff --git a/tests/compiler/builtins.debug.wat b/tests/compiler/builtins.debug.wat index fd74409ab4..7a2dcf7089 100644 --- a/tests/compiler/builtins.debug.wat +++ b/tests/compiler/builtins.debug.wat @@ -23,6 +23,7 @@ (global $builtins/s (mut i32) (i32.const 0)) (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) @@ -534,28 +535,32 @@ (local $37 f64) (local $38 f64) (local $39 f64) - (local $40 f32) - (local $41 f64) - (local $42 f32) + (local $40 i32) + (local $41 f32) + (local $42 f64) (local $43 f32) - (local $44 f64) + (local $44 f32) (local $45 f64) - (local $46 f32) - (local $47 f64) - (local $48 i32) + (local $46 f64) + (local $47 f32) + (local $48 f64) (local $49 i32) (local $50 i32) (local $51 i32) (local $52 i32) (local $53 i32) + (local $54 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 drop i32.const 0 @@ -2507,9 +2512,16 @@ end i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $builtins/fn + local.tee $40 + i32.store + local.get $40 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $40 i32.load call_indirect (type $2) i32.const 3 @@ -2527,11 +2539,11 @@ i32.const 2 i32.const 3 global.get $builtins/fn - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store - local.get $53 + local.get $54 + i32.store offset=4 + local.get $54 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index call_indirect (type $2) i32.eq @@ -2545,17 +2557,17 @@ unreachable end global.get $builtins/fn - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store offset=4 - local.get $53 + local.get $54 + i32.store offset=8 + local.get $54 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store - local.get $53 + local.get $54 + i32.store offset=4 + local.get $54 i32.const 32 call $~lib/string/String.__eq i32.eqz @@ -2568,11 +2580,11 @@ unreachable end global.get $builtins/fn - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store - local.get $53 + local.get $54 + i32.store offset=4 + local.get $54 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -2586,11 +2598,11 @@ unreachable end global.get $builtins/fn - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store - local.get $53 + local.get $54 + i32.store offset=4 + local.get $54 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -2604,17 +2616,17 @@ unreachable end global.get $builtins/fn - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store offset=4 - local.get $53 + local.get $54 + i32.store offset=8 + local.get $54 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString - local.set $53 + local.set $54 global.get $~lib/memory/__stack_pointer - local.get $53 - i32.store - local.get $53 + local.get $54 + i32.store offset=4 + local.get $54 i32.const 176 call $~lib/string/String.__eq i32.eqz @@ -2723,57 +2735,57 @@ f64.ne drop f32.const nan:0x400000 - local.tee $40 - local.get $40 + local.tee $41 + local.get $41 f32.ne drop f64.const nan:0x8000000000000 - local.tee $41 - local.get $41 + local.tee $42 + local.get $42 f64.ne drop f32.const nan:0x400000 - local.tee $42 - local.get $42 + local.tee $43 + local.get $43 f32.sub f32.const 0 f32.eq i32.eqz drop f32.const inf - local.tee $43 - local.get $43 + local.tee $44 + local.get $44 f32.sub f32.const 0 f32.eq i32.eqz drop f64.const nan:0x8000000000000 - local.tee $44 - local.get $44 + local.tee $45 + local.get $45 f64.sub f64.const 0 f64.eq i32.eqz drop f64.const inf - local.tee $45 - local.get $45 + local.tee $46 + local.get $46 f64.sub f64.const 0 f64.eq i32.eqz drop f32.const 0 - local.tee $46 - local.get $46 + local.tee $47 + local.get $47 f32.sub f32.const 0 f32.eq drop f64.const 0 - local.tee $47 - local.get $47 + local.tee $48 + local.get $48 f64.sub f64.const 0 f64.eq @@ -3247,19 +3259,17 @@ unreachable end i32.const 0 - local.set $48 - i32.const 0 local.set $49 - i32.const 51 + i32.const 0 local.set $50 - i32.const 52 + i32.const 51 local.set $51 i32.const 52 local.set $52 + i32.const 52 + local.set $53 i32.const 256 i32.const 5 - local.get $48 - f64.convert_i32_u local.get $49 f64.convert_i32_u local.get $50 @@ -3268,9 +3278,11 @@ f64.convert_i32_u local.get $52 f64.convert_i32_u + local.get $53 + f64.convert_i32_u call $~lib/builtins/trace - local.get $48 local.get $49 + local.get $50 i32.eq i32.eqz if @@ -3281,8 +3293,8 @@ call $~lib/builtins/abort unreachable end - local.get $48 - local.get $50 + local.get $49 + local.get $51 i32.ne i32.eqz if @@ -3293,7 +3305,7 @@ call $~lib/builtins/abort unreachable end - local.get $50 + local.get $51 i32.const 51 i32.eq i32.eqz @@ -3305,8 +3317,8 @@ call $~lib/builtins/abort unreachable end - local.get $51 local.get $52 + local.get $53 i32.eq i32.eqz if @@ -3684,7 +3696,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index a22c2024c1..6cd9814b96 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -246,7 +246,7 @@ ) (func $start:builtins global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -263,6 +263,9 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 global.set $builtins/i i32.const 0 @@ -614,6 +617,12 @@ global.set $builtins/f f64.const 25 global.set $builtins/F + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store + i32.const 1172 + i32.load + drop i32.const 1 i32.const 2 i32.const 1168 @@ -631,7 +640,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store + i32.store offset=4 i32.const 2 i32.const 3 i32.const 1168 @@ -649,10 +658,10 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1056 - i32.store + i32.store offset=4 i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -667,16 +676,16 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 1200 - i32.store + i32.store offset=4 i32.const 1200 i32.const 1200 call $~lib/string/String.__eq @@ -1007,7 +1016,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/call-optional.debug.wat b/tests/compiler/call-optional.debug.wat index 7a6794eba7..7f4c5b14b6 100644 --- a/tests/compiler/call-optional.debug.wat +++ b/tests/compiler/call-optional.debug.wat @@ -5,6 +5,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $call-optional/optIndirect (mut i32) (i32.const 96)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 108)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32876)) (global $~lib/memory/__heap_base i32 (i32.const 32876)) @@ -47,6 +48,20 @@ call $call-optional/opt ) (func $start:call-optional + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 3 i32.const 0 i32.const 1 @@ -99,9 +114,16 @@ i32.const 3 i32.const 0 i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $call-optional/optIndirect + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $0) i32.const 0 @@ -118,9 +140,16 @@ i32.const 3 i32.const 4 i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $call-optional/optIndirect + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) i32.const 5 @@ -137,9 +166,16 @@ i32.const 3 i32.const 4 i32.const 5 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength global.get $call-optional/optIndirect + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) i32.const 12 @@ -153,8 +189,25 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~start call $start:call-optional ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 32896 + i32.const 32944 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) ) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat index 79b66938d4..5e2d52a19b 100644 --- a/tests/compiler/call-optional.release.wat +++ b/tests/compiler/call-optional.release.wat @@ -4,6 +4,7 @@ (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33900)) (memory $0 1) (data $0 (i32.const 1036) "<") (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") @@ -38,12 +39,39 @@ i32.add ) (func $~start + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1132 + i32.lt_s + if + i32.const 33920 + i32.const 33968 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 1 global.set $~argumentsLength i32.const 2 global.set $~argumentsLength i32.const 1 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store + i32.const 1124 + i32.load + drop i32.const 3 i32.const 0 i32.const 0 @@ -60,6 +88,12 @@ end i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store offset=4 + i32.const 1124 + i32.load + drop i32.const 3 i32.const 4 i32.const 0 @@ -78,6 +112,12 @@ end i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store offset=8 + i32.const 1124 + i32.load + drop i32.const 3 i32.const 4 i32.const 5 @@ -94,5 +134,9 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/call-rest.debug.wat b/tests/compiler/call-rest.debug.wat index af743cb0b0..59bd454ab4 100644 --- a/tests/compiler/call-rest.debug.wat +++ b/tests/compiler/call-rest.debug.wat @@ -27,6 +27,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $call-rest/indirect (mut i32) (i32.const 624)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 1072)) (global $~lib/memory/__data_end i32 (i32.const 1112)) @@ -3400,14 +3401,19 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 24 + memory.fill memory.size i32.const 16 i32.shl @@ -3466,11 +3472,11 @@ i32.const 4 i32.const 560 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/fn i32.const 6 i32.eq @@ -3490,11 +3496,11 @@ i32.const 4 i32.const 592 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/fn i32.const 15 i32.eq @@ -3510,9 +3516,16 @@ i32.const 1 i32.const 0 i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $call-rest/indirect + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $3) i32.const 1 @@ -3529,9 +3542,16 @@ i32.const 1 i32.const 2 i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $call-rest/indirect + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $3) i32.const 3 @@ -3552,14 +3572,21 @@ i32.const 4 i32.const 656 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength global.get $call-rest/indirect + local.tee $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $3) i32.const 6 @@ -3580,14 +3607,21 @@ i32.const 4 i32.const 688 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength global.get $call-rest/indirect + local.tee $7 + i32.store offset=16 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $3) i32.const 15 @@ -3608,11 +3642,11 @@ global.set $~argumentsLength i32.const 0 call $call-rest/Foo#constructor@varargs - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/Foo#sum i32.const 1 i32.eq @@ -3632,11 +3666,11 @@ global.set $~argumentsLength i32.const 0 call $call-rest/Foo#constructor@varargs - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/Foo#sum i32.const 3 i32.eq @@ -3657,17 +3691,17 @@ i32.const 4 i32.const 800 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 + local.get $13 + i32.store offset=20 + local.get $13 call $call-rest/Foo#constructor - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/Foo#sum i32.const 6 i32.eq @@ -3688,17 +3722,17 @@ i32.const 4 i32.const 832 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=4 - local.get $9 + local.get $13 + i32.store offset=20 + local.get $13 call $call-rest/Foo#constructor - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/Foo#sum i32.const 15 i32.eq @@ -3731,11 +3765,11 @@ i32.const 4 i32.const 896 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/count i32.const 1 i32.eq @@ -3753,11 +3787,11 @@ i32.const 4 i32.const 928 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/count i32.const 3 i32.eq @@ -3775,11 +3809,11 @@ i32.const 8 i32.const 1056 call $~lib/rt/__newArray - local.set $9 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $13 i32.store - local.get $9 + local.get $13 call $call-rest/count<~lib/string/String> i32.const 3 i32.eq @@ -3793,7 +3827,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index 24506bdd09..7341e923da 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -2493,7 +2493,7 @@ (func $start:call-rest (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -2502,8 +2502,9 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 24 + memory.fill memory.size i32.const 16 i32.shl @@ -2612,6 +2613,12 @@ end i32.const 1 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=4 + i32.const 1652 + i32.load + drop i32.const 1 i32.const 0 i32.const 0 @@ -2630,6 +2637,12 @@ end i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=8 + i32.const 1652 + i32.load + drop i32.const 1 i32.const 2 i32.const 0 @@ -2656,6 +2669,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=12 + i32.const 1652 + i32.load + drop i32.const 1 i32.const 2 local.get $0 @@ -2682,6 +2701,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 1648 + i32.store offset=16 + i32.const 1652 + i32.load + drop i32.const 1 i32.const 2 local.get $0 @@ -2745,7 +2770,7 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=20 i32.const 2 local.get $0 call $call-rest/Foo#constructor @@ -2772,7 +2797,7 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=20 i32.const 2 local.get $0 call $call-rest/Foo#constructor @@ -2890,7 +2915,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/class-static-function.debug.wat b/tests/compiler/class-static-function.debug.wat index 8c028d9590..b36d10fc73 100644 --- a/tests/compiler/class-static-function.debug.wat +++ b/tests/compiler/class-static-function.debug.wat @@ -1,10 +1,11 @@ (module (type $0 (func)) (type $1 (func (result i32))) - (type $2 (func (param i32) (result i32))) - (type $3 (func (param i32 i32 i32 i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 124)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32892)) (global $~lib/memory/__heap_base i32 (i32.const 32892)) @@ -19,14 +20,6 @@ i32.const 42 return ) - (func $class-static-function/call (param $func i32) (result i32) - i32.const 0 - global.set $~argumentsLength - local.get $func - i32.load - call_indirect (type $1) - return - ) (func $~start call $start:class-static-function ) @@ -76,4 +69,35 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $class-static-function/call (param $func i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $func + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) ) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index 10a8811e24..2d99c8d175 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -21,30 +21,53 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1148 - i32.lt_s - if - i32.const 33936 - i32.const 33984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 1148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1148 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1060 + i32.load + drop + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1056 - i32.load - call_indirect (type $0) - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer + i32.const 33936 + i32.const 33984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable ) ) diff --git a/tests/compiler/closure-stress.debug.wat b/tests/compiler/closure-stress.debug.wat new file mode 100644 index 0000000000..f23a0a7bd3 --- /dev/null +++ b/tests/compiler/closure-stress.debug.wat @@ -0,0 +1,11036 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func (param i32 i32))) + (type $3 (func)) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (param i32))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (result f64))) + (type $8 (func (param i32 i32 i32) (result i32))) + (type $9 (func (result i64))) + (type $10 (func (result f32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i64) (result i32))) + (type $13 (func (param i64) (result i32))) + (type $14 (func (param f32) (result i32))) + (type $15 (func (param f64) (result i32))) + (type $16 (func (param i32 i64 f32 f64) (result i32))) + (type $17 (func (param i32 i32 i32 i32 i32 i32 i32 i32) (result i32))) + (type $18 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $closure-stress/counter1 (mut i32) (i32.const 0)) + (global $closure-stress/counter2 (mut i32) (i32.const 0)) + (global $closure-stress/addTo10 (mut i32) (i32.const 0)) + (global $closure-stress/greaterThan5 (mut i32) (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $closure-stress/add5 (mut i32) (i32.const 0)) + (global $closure-stress/add10 (mut i32) (i32.const 0)) + (global $closure-stress/double (mut i32) (i32.const 0)) + (global $closure-stress/triple (mut i32) (i32.const 0)) + (global $closure-stress/addThenDouble (mut i32) (i32.const 0)) + (global $closure-stress/callCount (mut i32) (i32.const 0)) + (global $closure-stress/fact (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 3120)) + (global $~lib/memory/__data_end i32 (i32.const 3204)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35972)) + (global $~lib/memory/__heap_base i32 (i32.const 35972)) + (memory $0 1) + (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00") + (data $2 (i32.const 108) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 208) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 236) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 300) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 352) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 380) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\"\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00s\00t\00r\00e\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 508) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\07\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $19 (i32.const 796) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 828) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $24 (i32.const 956) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $25 (i32.const 988) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1020) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1052) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1084) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $29 (i32.const 1132) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $30 (i32.const 1180) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 1212) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1244) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1276) "|\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $34 (i32.const 1404) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 1436) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 1468) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $38 (i32.const 1532) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 1564) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $40 (i32.const 1596) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1628) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1660) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 1692) "\1c\00\00\00\00\00\00\00\00\00\00\00\0c\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 1724) "\1c\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 1756) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 1788) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 1820) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 1852) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 1884) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 1916) "<\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00\00\00") + (data $51 (i32.const 1980) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 2044) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s\00\00\00\00\00\00\00") + (data $53 (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2156) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\0b\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\005\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\006\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\007\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\008\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\009\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00:\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00;\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\n\00\00\00\08\00\00\00<\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00H\00e\00l\00l\00o\00\00\00") + (data $76 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00=\00\00\00\00\00\00\00\00\00\00\00") + (data $77 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $78 (i32.const 2892) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $79 (i32.const 2924) "\1c\00\00\00\00\00\00\00\00\00\00\00\13\00\00\00\08\00\00\00>\00\00\00\00\00\00\00\00\00\00\00") + (data $80 (i32.const 2956) "\1c\00\00\00\00\00\00\00\00\00\00\00\12\00\00\00\08\00\00\00?\00\00\00\00\00\00\00\00\00\00\00") + (data $81 (i32.const 2988) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $82 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $83 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $84 (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00B\00C\00D\00\00\00\00\00") + (data $85 (i32.const 3120) "\14\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\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\00\00\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12\00\00\00\00\00\00\00\00\00") + (table $0 64 64 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|2 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|1 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/simpleClosureArray~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/closureInConditional~anonymous|0 $closure-stress/closureInConditional~anonymous|1 $closure-stress/closureEscapingBlock~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|1 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/makeMultiplier~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/ignoreCapture~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|1 $closure-stress/multipleClosureReturns~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/manyClosuresSameEnv~anonymous|5 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureLoopValue~anonymous|0 $closure-stress/interleavedClosures~anonymous|0 $closure-stress/interleavedClosures~anonymous|1 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/mutateStringRef~anonymous|1) + (export "memory" (memory $0)) + (start $~start) + (func $closure-stress/captureI32Param~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 256 + i32.const 320 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 128 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + 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 $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 64 + i32.const 400 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 400 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 64 + i32.const 128 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure-stress/captureI32Param (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 1 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureI64Param~anonymous|0 (result i64) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i64.load + ) + (func $closure-stress/captureI64Param (param $x i64) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + i64.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 2 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureF32Param~anonymous|0 (result f32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + f32.load + ) + (func $closure-stress/captureF32Param (param $x f32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + f32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 3 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureF64Param~anonymous|0 (result f64) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + f64.load + ) + (func $closure-stress/captureF64Param (param $x f64) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + f64.store + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 4 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureBool~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load8_u + ) + (func $closure-stress/captureBool (param $x i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $x + i32.store8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 5 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/captureMultipleI32~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $closure-stress/captureMultipleI32 (param $a i32) (param $b i32) (param $c i32) (result i32) + (local $$env i32) + (local $4 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store + local.get $$env + local.get $b + i32.store offset=4 + local.get $$env + local.get $c + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 6 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure-stress/captureMixedTypes~anonymous|0 (result f64) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + f64.convert_i32_s + local.get $$closureEnv + i64.load offset=8 + f64.convert_i64_s + f64.add + local.get $$closureEnv + f32.load offset=16 + f64.promote_f32 + f64.add + local.get $$closureEnv + f64.load offset=24 + f64.add + ) + (func $closure-stress/captureMixedTypes (param $a i32) (param $b i64) (param $c f32) (param $d f64) (result i32) + (local $$env i32) + (local $5 i32) + i32.const 32 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store + local.get $$env + local.get $b + i64.store offset=8 + local.get $$env + local.get $c + f32.store offset=16 + local.get $$env + local.get $d + f64.store offset=24 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 7 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + ) + (func $closure-stress/capture8Params~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add + local.get $$closureEnv + i32.load offset=20 + i32.add + local.get $$closureEnv + i32.load offset=24 + i32.add + local.get $$closureEnv + i32.load offset=28 + i32.add + ) + (func $closure-stress/capture8Params (param $a i32) (param $b i32) (param $c i32) (param $d i32) (param $e i32) (param $f i32) (param $g i32) (param $h i32) (result i32) + (local $$env i32) + (local $9 i32) + i32.const 32 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store + local.get $$env + local.get $b + i32.store offset=4 + local.get $$env + local.get $c + i32.store offset=8 + local.get $$env + local.get $d + i32.store offset=12 + local.get $$env + local.get $e + i32.store offset=16 + local.get $$env + local.get $f + i32.store offset=20 + local.get $$env + local.get $g + i32.store offset=24 + local.get $$env + local.get $h + i32.store offset=28 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $9 + local.get $9 + i32.const 8 + i32.store + local.get $9 + local.get $$env + i32.store offset=4 + local.get $9 + return + ) + (func $closure-stress/captureParamsAndLocals~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + ) + (func $closure-stress/captureParamsAndLocals (param $a i32) (param $b i32) (result i32) + (local $$env i32) + (local $c i32) + (local $d i32) + (local $5 i32) + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store + local.get $$env + local.get $b + i32.store offset=4 + local.get $$env + i32.const 100 + i32.store offset=8 + local.get $$env + i32.const 200 + i32.store offset=12 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 9 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + ) + (func $closure-stress/makeCounter~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 1 + i32.add + i32.store + local.get $$closureEnv + i32.load + return + ) + (func $closure-stress/makeCounter (result i32) + (local $count i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 10 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/testBidirectionalMutation~anonymous|0 (param $x i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $x + i32.store + ) + (func $closure-stress/testBidirectionalMutation~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/testSharedMutation~anonymous|0 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure-stress/testSharedMutation~anonymous|1 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 1 + i32.sub + i32.store + ) + (func $closure-stress/testSharedMutation~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/testOuterScopeMutation~anonymous|0 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 2 + i32.mul + i32.store + ) + (func $closure-stress/testOuterScopeMutation~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/curriedAdd~anonymous|0 (param $b i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $b + i32.add + ) + (func $closure-stress/curriedAdd (param $a i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $a + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 18 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/makeGreaterThan~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load + i32.gt_s + ) + (func $closure-stress/makeGreaterThan (param $threshold i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $threshold + i32.store + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 19 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $~lib/array/Array<%28%29=>i32>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28%29=>i32>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28%29=>i32>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28%29=>i32>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-stress/simpleClosureArray~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $~lib/array/Array<%28%29=>i32>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28%29=>i32>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-stress/simpleClosureArray~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure-stress/closureInConditional~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/closureInConditional~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/closureEscapingBlock~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-stress/Counter#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $closure-stress/Counter#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-stress/testMapWithClosure~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load + i32.mul + ) + (func $closure-stress/testFilterWithClosure~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load + i32.ge_s + ) + (func $closure-stress/testReduceWithClosure~anonymous|0 (param $acc i32) (param $x i32) (result i32) + local.get $acc + local.get $x + i32.add + ) + (func $closure-stress/testReduceWithClosure~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load + i32.add + ) + (func $closure-stress/makeAdder~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load + i32.add + ) + (func $closure-stress/makeAdder (param $amount i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $amount + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 35 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/makeMultiplier~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + local.get $$closureEnv + i32.load + i32.mul + ) + (func $closure-stress/makeMultiplier (param $factor i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $factor + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 36 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/compose (param $f i32) (param $g i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $f + i32.store + local.get $$env + local.get $g + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 37 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/expensiveComputation (param $x i32) (result i32) + global.get $closure-stress/callCount + i32.const 1 + i32.add + global.set $closure-stress/callCount + local.get $x + local.get $x + i32.mul + return + ) + (func $"~lib/map/Map#set:buckets" (param $this i32) (param $buckets i32) + local.get $this + local.get $buckets + i32.store + local.get $this + local.get $buckets + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:bucketsMask" (param $this i32) (param $bucketsMask i32) + local.get $this + local.get $bucketsMask + i32.store offset=4 + ) + (func $"~lib/map/Map#set:entries" (param $this i32) (param $entries i32) + local.get $this + local.get $entries + i32.store offset=8 + local.get $this + local.get $entries + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $"~lib/map/Map#set:entriesCapacity" (param $this i32) (param $entriesCapacity i32) + local.get $this + local.get $entriesCapacity + i32.store offset=12 + ) + (func $"~lib/map/Map#set:entriesOffset" (param $this i32) (param $entriesOffset i32) + local.get $this + local.get $entriesOffset + i32.store offset=16 + ) + (func $"~lib/map/Map#set:entriesCount" (param $this i32) (param $entriesCount i32) + local.get $this + local.get $entriesCount + i32.store offset=20 + ) + (func $~lib/util/hash/HASH (param $key i32) (result i32) + (local $key|1 i32) + (local $len i32) + (local $h i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 4 + i32.const 4 + i32.le_u + drop + block $~lib/util/hash/hash32|inlined.0 (result i32) + local.get $key + local.set $key|1 + i32.const 4 + local.set $len + i32.const 0 + i32.const 374761393 + i32.add + local.get $len + i32.add + local.set $h + local.get $h + local.get $key|1 + i32.const -1028477379 + i32.mul + i32.add + local.set $h + local.get $h + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 15 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -2048144777 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 13 + i32.shr_u + i32.xor + local.set $h + local.get $h + i32.const -1028477379 + i32.mul + local.set $h + local.get $h + local.get $h + i32.const 16 + i32.shr_u + i32.xor + local.set $h + local.get $h + br $~lib/util/hash/hash32|inlined.0 + end + return + ) + (func $"~lib/map/Map#get:buckets" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/Map#get:bucketsMask" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#get:taggedNext" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#get:key" (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $"~lib/map/MapEntry#get:value" (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $"~lib/map/MapEntry#set:value" (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store offset=4 + ) + (func $"~lib/map/Map#get:entriesOffset" (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $"~lib/map/Map#get:entriesCapacity" (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $"~lib/map/Map#get:entriesCount" (param $this i32) (result i32) + local.get $this + i32.load offset=20 + ) + (func $"~lib/map/Map#get:entries" (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $"~lib/map/MapEntry#set:key" (param $this i32) (param $key i32) + local.get $this + local.get $key + i32.store + ) + (func $"~lib/map/MapEntry#set:taggedNext" (param $this i32) (param $taggedNext i32) + local.get $this + local.get $taggedNext + i32.store offset=8 + ) + (func $closure-stress/memoize (param $fn i32) (result i32) + (local $$env i32) + (local $cache i32) + (local $3 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $fn + i32.store + local.get $$env + i32.const 0 + call $"~lib/map/Map#constructor" + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 39 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/emptyClosure~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/emptyClosure (result i32) + i32.const 2144 + return + ) + (func $closure-stress/captureOnlyNoParams~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load offset=4 + i32.add + ) + (func $closure-stress/ignoreCapture~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/multipleClosureReturns~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/multipleClosureReturns~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/multipleClosureReturns~anonymous|2 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=8 + ) + (func $closure-stress/multipleClosureReturns (param $which i32) (result i32) + (local $a i32) + (local $$env i32) + (local $b i32) + (local $c i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 10 + i32.store + local.get $$env + i32.const 20 + i32.store offset=4 + local.get $$env + i32.const 30 + i32.store offset=8 + local.get $which + i32.const 0 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 43 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + else + local.get $which + i32.const 1 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 44 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + return + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 45 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + return + end + unreachable + end + unreachable + ) + (func $closure-stress/makeFactorial~anonymous|0 (param $n i32) (result i32) + (local $result i32) + (local $i i32) + i32.const 1 + local.set $result + i32.const 2 + local.set $i + loop $for-loop|0 + local.get $i + local.get $n + i32.le_s + if + local.get $result + local.get $i + i32.mul + local.set $result + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + return + ) + (func $closure-stress/makeFactorial (result i32) + i32.const 2336 + return + ) + (func $closure-stress/captureSmallTypes~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load8_s + local.get $$closureEnv + i32.load8_u offset=1 + i32.add + local.get $$closureEnv + i32.load16_s offset=2 + i32.add + local.get $$closureEnv + i32.load16_u offset=4 + i32.add + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|0 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|1 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 2 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|2 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 3 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|3 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 4 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|4 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 5 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|5 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/manyCaptures~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load offset=4 + i32.add + local.get $$closureEnv + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add + local.get $$closureEnv + i32.load offset=20 + i32.add + local.get $$closureEnv + i32.load offset=24 + i32.add + local.get $$closureEnv + i32.load offset=28 + i32.add + local.get $$closureEnv + i32.load offset=32 + i32.add + local.get $$closureEnv + i32.load offset=36 + i32.add + local.get $$closureEnv + i32.load offset=40 + i32.add + local.get $$closureEnv + i32.load offset=44 + i32.add + ) + (func $closure-stress/simpleIIFE~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + i32.const 9 + i32.add + return + ) + (func $closure-stress/captureLoopValue~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/captureLoopValue (param $val i32) (result i32) + (local $$env i32) + (local $2 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $val + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 56 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + return + ) + (func $closure-stress/interleavedClosures~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $closure-stress/interleavedClosures~anonymous|1 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure-stress/interleavedClosures~anonymous|2 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 10 + i32.add + i32.store + ) + (func $closure-stress/interleavedClosures~anonymous|3 + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + i32.const 100 + i32.add + i32.store + ) + (func $closure-stress/captureString~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $closure-stress/mutateStringRef~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 256 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1104 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1296 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 2000 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 64 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%29=>i64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i64>#__visit + ) + (func $~lib/function/Function<%28%29=>f32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f32>#__visit + ) + (func $~lib/function/Function<%28%29=>f64>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>f64>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>#__visit + ) + (func $~lib/function/Function<%28%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>#__visit + ) + (func $~lib/array/Array<%28%29=>i32>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit + ) + (func $"~lib/map/Map~visit" (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $"~lib/map/Map#__visit" + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>#__visit + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $~lib/function/Function<%28~lib/string/String%29=>void> + block $~lib/function/Function<%28%29=>~lib/string/String> + block $"~lib/map/Map" + block $~lib/function/Function<%28i32%2Ci32%29=>i32> + block $closure-stress/Counter + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/function/Function<%28i32%29=>bool> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $~lib/function/Function<%28i32%29=>void> + block $~lib/function/Function<%28%29=>bool> + block $~lib/function/Function<%28%29=>f64> + block $~lib/function/Function<%28%29=>f32> + block $~lib/function/Function<%28%29=>i64> + block $~lib/function/Function<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $~lib/function/Function<%28%29=>i32> $~lib/function/Function<%28%29=>i64> $~lib/function/Function<%28%29=>f32> $~lib/function/Function<%28%29=>f64> $~lib/function/Function<%28%29=>bool> $~lib/function/Function<%28i32%29=>void> $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28i32%29=>bool> $~lib/array/Array<%28%29=>i32> $~lib/array/Array $closure-stress/Counter $~lib/function/Function<%28i32%2Ci32%29=>i32> $"~lib/map/Map" $~lib/function/Function<%28%29=>~lib/string/String> $~lib/function/Function<%28~lib/string/String%29=>void> $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>f64>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $"~lib/map/Map~visit" + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>~visit + return + end + unreachable + ) + (func $~start + call $start:closure-stress + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 36000 + i32.const 36048 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/array/Array<%28%29=>i32>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 1104 + i32.const 1152 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28%29=>i32>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28%29=>i32>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28%29=>i32>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 1104 + i32.const 1152 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 256 + i32.const 1152 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array<%28%29=>i32>#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 1 + drop + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 1152 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1296 + i32.const 1152 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/simpleClosureArray (result i32) + (local $fns i32) + (local $v0 i32) + (local $$env i32) + (local $3 i32) + (local $v1 i32) + (local $5 i32) + (local $v2 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $fns + i32.store + local.get $$env + i32.const 10 + i32.store + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 20 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $$env + i32.const 20 + i32.store offset=4 + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 1 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 21 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $$env + i32.const 30 + i32.store offset=8 + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 22 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=8 + local.get $11 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fns + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store offset=4 + local.get $11 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + i32.add + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 1104 + i32.const 1152 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $~lib/array/Array#__set (param $this i32) (param $index i32) (param $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + local.get $index + i32.const 0 + i32.lt_s + if + i32.const 256 + i32.const 1152 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.get $index + i32.const 1 + i32.add + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $index + i32.const 1 + i32.add + call $~lib/array/Array#set:length_ + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + i32.const 0 + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 256 + i32.const 1152 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.set $value + i32.const 0 + drop + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureArray~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureArray (result i32) + (local $arr i32) + (local $$env i32) + (local $2 i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store + local.get $$env + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $$env + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $$env + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 26 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $sum + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/mutateCapturedArray~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.const 2 + i32.mul + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/mutateCapturedArray~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $~lib/array/Array#__get + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/mutateCapturedArray (result i32) + (local $arr i32) + (local $$env i32) + (local $2 i32) + (local $doubleAll i32) + (local $4 i32) + (local $sum i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + i32.store + local.get $$env + i32.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $$env + i32.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $$env + i32.load + local.set $11 + global.get $~lib/memory/__stack_pointer + local.get $11 + i32.store + local.get $11 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 27 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $doubleAll + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 28 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $sum + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $doubleAll + local.tee $7 + i32.store offset=16 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $doubleAll + local.tee $9 + i32.store offset=24 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $sum + local.tee $10 + i32.store offset=28 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-stress/Counter#set:value + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureClassInstance~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-stress/Counter#get:value + i32.const 1 + i32.add + call $closure-stress/Counter#set:value + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|1 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-stress/Counter#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-stress/mapArray (param $arr i32) (param $fn i32) (result i32) + (local $result i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + call $~lib/array/Array#constructor + local.tee $result + i32.store offset=4 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testMapWithClosure (result i32) + (local $multiplier i32) + (local $$env i32) + (local $arr i32) + (local $3 i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 31 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $closure-stress/mapArray + local.tee $result + i32.store offset=12 + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 0 + call $~lib/array/Array#__get + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 1 + call $~lib/array/Array#__get + i32.add + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.const 2 + call $~lib/array/Array#__get + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 0 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/filterArray (param $arr i32) (param $pred i32) (result i32) + (local $result i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.tee $result + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $pred + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + if + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $arr + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + local.get $i + call $~lib/array/Array#__get + call $~lib/array/Array#push + drop + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testFilterWithClosure (result i32) + (local $threshold i32) + (local $$env i32) + (local $arr i32) + (local $i i32) + (local $4 i32) + (local $result i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + local.get $i + call $~lib/array/Array#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 32 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $closure-stress/filterArray + local.tee $result + i32.store offset=12 + local.get $result + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $~lib/array/Array#get:length + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/reduceArray (param $arr i32) (param $fn i32) (param $initial i32) (result i32) + (local $acc i32) + (local $i i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $initial + local.set $acc + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + if + local.get $acc + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + local.get $i + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $4) + local.set $acc + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $acc + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testReduceWithClosure (result i32) + (local $bonus i32) + (local $$env i32) + (local $arr i32) + (local $result i32) + (local $4 i32) + (local $addBonus i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $~lib/array/Array#constructor + local.tee $arr + i32.store + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 3 + i32.const 4 + call $~lib/array/Array#__set + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 4 + i32.const 5 + call $~lib/array/Array#__set + local.get $$env + local.get $arr + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + i32.const 1744 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=8 + local.get $7 + i32.const 0 + call $closure-stress/reduceArray + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 34 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $addBonus + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addBonus + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $"~lib/map/Map#constructor" (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + i32.const 1 + i32.sub + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 4 + block $"~lib/map/ENTRY_SIZE|inlined.0" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.0" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 4 + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesOffset" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $"~lib/map/Map#find" (param $this i32) (param $key i32) (param $hashCode i32) (result i32) + (local $entry i32) + (local $taggedNext i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + i32.load + local.set $entry + loop $while-continue|0 + local.get $entry + if + local.get $entry + call $"~lib/map/MapEntry#get:taggedNext" + local.set $taggedNext + local.get $taggedNext + i32.const 1 + i32.and + i32.eqz + if (result i32) + local.get $entry + call $"~lib/map/MapEntry#get:key" + local.get $key + i32.eq + else + i32.const 0 + end + if + local.get $entry + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + end + local.get $taggedNext + i32.const 1 + i32.const -1 + i32.xor + i32.and + local.set $entry + br $while-continue|0 + end + end + i32.const 0 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $"~lib/map/Map#has" (param $this i32) (param $key i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $"~lib/map/Map#get" (param $this i32) (param $key i32) (result i32) + (local $entry i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $key + local.get $key + call $~lib/util/hash/HASH + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + i32.eqz + if + i32.const 2000 + i32.const 2064 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $entry + call $"~lib/map/MapEntry#get:value" + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $"~lib/map/Map#rehash" (param $this i32) (param $newBucketsMask i32) + (local $newBucketsCapacity i32) + (local $newBuckets i32) + (local $newEntriesCapacity i32) + (local $newEntries i32) + (local $oldPtr i32) + (local $oldEnd i32) + (local $newPtr i32) + (local $oldEntry i32) + (local $newEntry i32) + (local $oldEntryKey i32) + (local $newBucketIndex i32) + (local $newBucketPtrBase i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $newBucketsMask + i32.const 1 + i32.add + local.set $newBucketsCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newBucketsCapacity + i32.const 4 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newBuckets + i32.store + local.get $newBucketsCapacity + i32.const 8 + i32.mul + i32.const 3 + i32.div_s + local.set $newEntriesCapacity + global.get $~lib/memory/__stack_pointer + i32.const 0 + local.get $newEntriesCapacity + block $"~lib/map/ENTRY_SIZE|inlined.1" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.1" + end + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $newEntries + i32.store offset=4 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entries" + local.set $oldPtr + local.get $oldPtr + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + call $"~lib/map/Map#get:entriesOffset" + block $"~lib/map/ENTRY_SIZE|inlined.2" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.2" + end + i32.mul + i32.add + local.set $oldEnd + local.get $newEntries + local.set $newPtr + loop $while-continue|0 + local.get $oldPtr + local.get $oldEnd + i32.ne + if + local.get $oldPtr + local.set $oldEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:taggedNext" + i32.const 1 + i32.and + i32.eqz + if + local.get $newPtr + local.set $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:key" + local.set $oldEntryKey + local.get $newEntry + local.get $oldEntryKey + call $"~lib/map/MapEntry#set:key" + local.get $newEntry + local.get $oldEntry + call $"~lib/map/MapEntry#get:value" + call $"~lib/map/MapEntry#set:value" + local.get $oldEntryKey + call $~lib/util/hash/HASH + local.get $newBucketsMask + i32.and + local.set $newBucketIndex + local.get $newBuckets + local.get $newBucketIndex + i32.const 4 + i32.mul + i32.add + local.set $newBucketPtrBase + local.get $newEntry + local.get $newBucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $newBucketPtrBase + local.get $newPtr + i32.store + local.get $newPtr + block $"~lib/map/ENTRY_SIZE|inlined.3" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.3" + end + i32.add + local.set $newPtr + end + local.get $oldPtr + block $"~lib/map/ENTRY_SIZE|inlined.4" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.4" + end + i32.add + local.set $oldPtr + br $while-continue|0 + end + end + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBuckets + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:buckets" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newBucketsMask + call $"~lib/map/Map#set:bucketsMask" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntries + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#set:entries" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $newEntriesCapacity + call $"~lib/map/Map#set:entriesCapacity" + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=8 + local.get $14 + local.get $this + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store offset=12 + local.get $14 + call $"~lib/map/Map#get:entriesCount" + call $"~lib/map/Map#set:entriesOffset" + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#set" (param $this i32) (param $key i32) (param $value i32) (result i32) + (local $hashCode i32) + (local $entry i32) + (local $entries i32) + (local $6 i32) + (local $bucketPtrBase i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $key + call $~lib/util/hash/HASH + local.set $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $key + local.get $hashCode + call $"~lib/map/Map#find" + local.set $entry + local.get $entry + if + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.eq + if + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCapacity" + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + else + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + call $"~lib/map/Map#rehash" + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:entries" + local.tee $entries + i32.store offset=8 + local.get $entries + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesOffset" + local.tee $6 + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesOffset" + local.get $6 + block $"~lib/map/ENTRY_SIZE|inlined.5" (result i32) + i32.const 12 + br $"~lib/map/ENTRY_SIZE|inlined.5" + end + i32.mul + i32.add + local.set $entry + local.get $entry + local.get $key + call $"~lib/map/MapEntry#set:key" + i32.const 0 + drop + local.get $entry + local.get $value + call $"~lib/map/MapEntry#set:value" + i32.const 0 + drop + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $"~lib/map/Map#get:entriesCount" + i32.const 1 + i32.add + call $"~lib/map/Map#set:entriesCount" + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:buckets" + local.get $hashCode + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store + local.get $8 + call $"~lib/map/Map#get:bucketsMask" + i32.and + i32.const 4 + i32.mul + i32.add + local.set $bucketPtrBase + local.get $entry + local.get $bucketPtrBase + i32.load + call $"~lib/map/MapEntry#set:taggedNext" + local.get $bucketPtrBase + local.get $entry + i32.store + end + local.get $this + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/memoize~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + call $"~lib/map/Map#has" + if + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + call $"~lib/map/Map#get" + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + end + local.get $x + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + local.set $result + local.get $$closureEnv + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $x + local.get $result + call $"~lib/map/Map#set" + drop + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/testMemoization (result i32) + (local $memoized i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + global.set $closure-stress/callCount + global.get $~lib/memory/__stack_pointer + i32.const 1904 + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-stress/memoize + local.tee $memoized + i32.store offset=4 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + i32.const 9 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 418 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $memoized + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + i32.const 25 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/closureArrayOps (result i32) + (local $closures i32) + (local $i i32) + (local $captured i32) + (local $sum i32) + (local $i|4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $closures + i32.store + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + i32.const 10 + i32.lt_s + if + local.get $i + i32.const 10 + i32.mul + local.set $captured + local.get $closures + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + local.get $captured + call $closure-stress/captureLoopValue + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + i32.const 0 + local.set $sum + i32.const 0 + local.set $i|4 + loop $for-loop|1 + local.get $i|4 + i32.const 10 + i32.lt_s + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $closures + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i|4 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.add + local.set $sum + local.get $i|4 + i32.const 1 + i32.add + local.set $i|4 + br $for-loop|1 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 2912 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-stress/mutateStringRef~anonymous|0 (param $suffix i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $suffix + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $start:closure-stress + (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) + (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) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + global.get $~lib/memory/__stack_pointer + i32.const 168 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 168 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 42 + call $closure-stress/captureI32Param + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const -1 + call $closure-stress/captureI32Param + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 2147483647 + call $closure-stress/captureI32Param + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 2147483647 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i64.const 42 + call $closure-stress/captureI64Param + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $9) + i64.const 42 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i64.const 9223372036854775807 + call $closure-stress/captureI64Param + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $9) + i64.const 9223372036854775807 + i64.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f32.const 3.140000104904175 + call $closure-stress/captureF32Param + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $10) + f32.const 3.140000104904175 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f32.const 0 + call $closure-stress/captureF32Param + local.tee $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $10) + f32.const 0 + f32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f64.const 3.141592653589793 + call $closure-stress/captureF64Param + local.tee $7 + i32.store offset=28 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $7) + f64.const 3.141592653589793 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + f64.const inf + call $closure-stress/captureF64Param + local.tee $8 + i32.store offset=32 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $7) + f64.const inf + f64.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + call $closure-stress/captureBool + local.tee $9 + i32.store offset=36 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $closure-stress/captureBool + local.tee $10 + i32.store offset=40 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 3 + call $closure-stress/captureMultipleI32 + local.tee $11 + i32.store offset=44 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $0) + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 100 + i32.const 200 + i32.const 300 + call $closure-stress/captureMultipleI32 + local.tee $12 + i32.store offset=48 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const 600 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i64.const 2 + f32.const 3 + f64.const 4 + call $closure-stress/captureMixedTypes + local.tee $13 + i32.store offset=52 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $7) + f64.const 10 + f64.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + i32.const 3 + i32.const 4 + i32.const 5 + i32.const 6 + i32.const 7 + i32.const 8 + call $closure-stress/capture8Params + local.tee $14 + i32.store offset=56 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + i32.const 36 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + i32.const 2 + call $closure-stress/captureParamsAndLocals + local.tee $15 + i32.store offset=60 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $0) + i32.const 303 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $16 + i32.store offset=64 + local.get $16 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $17 + i32.store offset=68 + local.get $17 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $0) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $18 + i32.store offset=72 + local.get $18 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $0) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter2 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter2 + local.tee $19 + i32.store offset=76 + local.get $19 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $0) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/counter1 + local.tee $20 + i32.store offset=80 + local.get $20 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $20 + i32.load + call_indirect (type $0) + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testBidirectionalMutation + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testSharedMutation + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testOuterScopeMutation + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 10 + call $closure-stress/curriedAdd + global.set $closure-stress/addTo10 + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addTo10 + local.tee $21 + i32.store offset=84 + local.get $21 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $21 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addTo10 + local.tee $22 + i32.store offset=88 + local.get $22 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $22 + i32.load + call_indirect (type $1) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeGreaterThan + global.set $closure-stress/greaterThan5 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/greaterThan5 + local.tee $23 + i32.store offset=92 + local.get $23 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $23 + i32.load + call_indirect (type $1) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/greaterThan5 + local.tee $24 + i32.store offset=96 + local.get $24 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $24 + i32.load + call_indirect (type $1) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/simpleClosureArray + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure-stress/closureInConditional + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $closure-stress/closureInConditional + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/closureEscapingBlock + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureArray + i32.const 6 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/mutateCapturedArray + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureClassInstance + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testMapWithClosure + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testFilterWithClosure + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testReduceWithClosure + i32.const 115 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeAdder + global.set $closure-stress/add5 + i32.const 10 + call $closure-stress/makeAdder + global.set $closure-stress/add10 + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add5 + local.tee $25 + i32.store offset=100 + local.get $25 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $25 + i32.load + call_indirect (type $1) + i32.const 8 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add10 + local.tee $26 + i32.store offset=104 + local.get $26 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $26 + i32.load + call_indirect (type $1) + i32.const 13 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add10 + local.tee $27 + i32.store offset=112 + local.get $27 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $27 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/add5 + local.tee $28 + i32.store offset=108 + local.get $28 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $28 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure-stress/makeMultiplier + global.set $closure-stress/double + i32.const 3 + call $closure-stress/makeMultiplier + global.set $closure-stress/triple + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/double + local.tee $29 + i32.store offset=116 + local.get $29 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $29 + i32.load + call_indirect (type $1) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/triple + local.tee $30 + i32.store offset=120 + local.get $30 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $30 + i32.load + call_indirect (type $1) + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 4 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/triple + local.tee $31 + i32.store offset=128 + local.get $31 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $31 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/double + local.tee $32 + i32.store offset=124 + local.get $32 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $32 + i32.load + call_indirect (type $1) + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/double + local.set $40 + global.get $~lib/memory/__stack_pointer + local.get $40 + i32.store offset=132 + local.get $40 + global.get $closure-stress/add5 + local.set $40 + global.get $~lib/memory/__stack_pointer + local.get $40 + i32.store offset=136 + local.get $40 + call $closure-stress/compose + global.set $closure-stress/addThenDouble + i32.const 3 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/addThenDouble + local.tee $33 + i32.store offset=140 + local.get $33 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $33 + i32.load + call_indirect (type $1) + i32.const 16 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testMemoization + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + call $closure-stress/emptyClosure + local.tee $34 + i32.store offset=144 + local.get $34 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $34 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureOnlyNoParams + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/ignoreCapture + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 0 + call $closure-stress/multipleClosureReturns + local.tee $35 + i32.store offset=148 + local.get $35 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $35 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 1 + call $closure-stress/multipleClosureReturns + local.tee $36 + i32.store offset=152 + local.get $36 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $36 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 2 + call $closure-stress/multipleClosureReturns + local.tee $37 + i32.store offset=156 + local.get $37 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $37 + i32.load + call_indirect (type $0) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeFactorial + global.set $closure-stress/fact + i32.const 5 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/fact + local.tee $38 + i32.store offset=160 + local.get $38 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $38 + i32.load + call_indirect (type $1) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 6 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + global.get $closure-stress/fact + local.tee $39 + i32.store offset=164 + local.get $39 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $39 + i32.load + call_indirect (type $1) + i32.const 720 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureSmallTypes + i32.const 100 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/manyClosuresSameEnv + i32.const 15 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/manyCaptures + i32.const 78 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/simpleIIFE + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/closureArrayOps + i32.const 450 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/interleavedClosures + i32.const 123 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/captureString + local.set $40 + global.get $~lib/memory/__stack_pointer + local.get $40 + i32.store offset=132 + local.get $40 + i32.const 2816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/mutateStringRef + local.set $40 + global.get $~lib/memory/__stack_pointer + local.get $40 + i32.store offset=132 + local.get $40 + i32.const 3104 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 168 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>f32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>f64>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>f64>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28%29=>i32>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 0 + drop + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#__visit" (param $this i32) (param $cookie i32) + (local $entries i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:buckets" + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $"~lib/map/Map#get:entries" + local.set $entries + i32.const 0 + drop + local.get $entries + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>~lib/string/String>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testBidirectionalMutation (result i32) + (local $value i32) + (local $$env i32) + (local $2 i32) + (local $setter i32) + (local $4 i32) + (local $getter i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 11 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $setter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 12 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $getter + i32.store offset=4 + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setter + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $10 + i32.store offset=24 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/testSharedMutation (result i32) + (local $value i32) + (local $$env i32) + (local $2 i32) + (local $inc i32) + (local $4 i32) + (local $dec i32) + (local $6 i32) + (local $get 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/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 13 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 14 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $dec + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 15 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $get + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $dec + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $12 + i32.store offset=28 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $13 + i32.store offset=32 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $14 + i32.store offset=36 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $closure-stress/testOuterScopeMutation (result i32) + (local $value i32) + (local $$env i32) + (local $2 i32) + (local $double i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 16 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $double + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 17 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $double + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $double + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $10 + i32.store offset=24 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + local.set $11 + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $11 + return + ) + (func $closure-stress/closureInConditional (param $useFirst i32) (result i32) + (local $a i32) + (local $$env i32) + (local $b i32) + (local $getter i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 10 + i32.store + local.get $$env + i32.const 20 + i32.store offset=4 + local.get $useFirst + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 23 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $getter + i32.store + else + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 24 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $getter + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getter + local.tee $7 + i32.store offset=4 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/closureEscapingBlock (result i32) + (local $value i32) + (local $captured i32) + (local $inner i32) + (local $$env i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + i32.const 0 + local.set $value + local.get $$env + i32.const 42 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 25 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $captured + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $captured + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $value + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $captured + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-stress/captureClassInstance (result i32) + (local $c i32) + (local $$env i32) + (local $2 i32) + (local $inc i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + call $closure-stress/Counter#constructor + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 29 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 30 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-stress/compose~anonymous|0 (param $x i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $x + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load offset=4 + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $this i32) (param $length i32) (result i32) + (local $buffer i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $length + i32.const 1073741820 + i32.gt_u + if + i32.const 1104 + i32.const 1936 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $length + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $buffer + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureOnlyNoParams (result i32) + (local $x i32) + (local $$env i32) + (local $y i32) + (local $3 i32) + (local $fn i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 10 + i32.store + local.get $$env + i32.const 20 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 41 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/ignoreCapture (result i32) + (local $unused i32) + (local $fn i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 999 + local.set $unused + global.get $~lib/memory/__stack_pointer + i32.const 2208 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-stress/captureSmallTypes (result i32) + (local $a i32) + (local $$env i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $5 i32) + (local $fn i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 10 + i32.store8 + local.get $$env + i32.const 20 + i32.store8 offset=1 + local.get $$env + i32.const 30 + i32.store16 offset=2 + local.get $$env + i32.const 40 + i32.store16 offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 47 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $7 + i32.store offset=4 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-stress/manyClosuresSameEnv (result i32) + (local $value i32) + (local $$env i32) + (local $2 i32) + (local $inc1 i32) + (local $4 i32) + (local $inc2 i32) + (local $6 i32) + (local $inc3 i32) + (local $8 i32) + (local $inc4 i32) + (local $10 i32) + (local $inc5 i32) + (local $12 i32) + (local $get i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + (local $18 i32) + (local $19 i32) + (local $20 i32) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 48 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inc1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 49 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $inc2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 50 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.tee $inc3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $8 + local.get $8 + i32.const 51 + i32.store + local.get $8 + local.get $$env + i32.store offset=4 + local.get $8 + local.tee $inc4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $10 + local.get $10 + i32.const 52 + i32.store + local.get $10 + local.get $$env + i32.store offset=4 + local.get $10 + local.tee $inc5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $12 + local.get $12 + i32.const 53 + i32.store + local.get $12 + local.get $$env + i32.store offset=4 + local.get $12 + local.tee $get + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $14 + i32.store offset=24 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $15 + i32.store offset=28 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc3 + local.tee $16 + i32.store offset=32 + local.get $16 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc4 + local.tee $17 + i32.store offset=36 + local.get $17 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc5 + local.tee $18 + i32.store offset=40 + local.get $18 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $19 + i32.store offset=44 + local.get $19 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $0) + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $closure-stress/manyCaptures (result i32) + (local $a i32) + (local $$env i32) + (local $b i32) + (local $c i32) + (local $d i32) + (local $e i32) + (local $f i32) + (local $g i32) + (local $h i32) + (local $i i32) + (local $j i32) + (local $k i32) + (local $l i32) + (local $13 i32) + (local $fn i32) + (local $15 i32) + (local $16 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 48 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 1 + i32.store + local.get $$env + i32.const 2 + i32.store offset=4 + local.get $$env + i32.const 3 + i32.store offset=8 + local.get $$env + i32.const 4 + i32.store offset=12 + local.get $$env + i32.const 5 + i32.store offset=16 + local.get $$env + i32.const 6 + i32.store offset=20 + local.get $$env + i32.const 7 + i32.store offset=24 + local.get $$env + i32.const 8 + i32.store offset=28 + local.get $$env + i32.const 9 + i32.store offset=32 + local.get $$env + i32.const 10 + i32.store offset=36 + local.get $$env + i32.const 11 + i32.store offset=40 + local.get $$env + i32.const 12 + i32.store offset=44 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $13 + local.get $13 + i32.const 54 + i32.store + local.get $13 + local.get $$env + i32.store offset=4 + local.get $13 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $15 + i32.store offset=4 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $0) + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $closure-stress/simpleIIFE (result i32) + (local $v1 i32) + (local $$env i32) + (local $2 i32) + (local $3 i32) + (local $result i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 55 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $result + local.get $result + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/interleavedClosures (result i32) + (local $total i32) + (local $$env i32) + (local $2 i32) + (local $get i32) + (local $4 i32) + (local $add1 i32) + (local $6 i32) + (local $7 i32) + (local $add10 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $add100 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) + (local $16 i32) + (local $17 i32) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 57 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $get + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 58 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $add1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $7 + local.get $7 + i32.const 59 + i32.store + local.get $7 + local.get $$env + i32.store offset=4 + local.get $7 + local.tee $add10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $9 + i32.store offset=16 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.set $11 + local.get $11 + i32.const 60 + i32.store + local.get $11 + local.get $$env + i32.store offset=4 + local.get $11 + local.tee $add100 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add1 + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add100 + local.tee $15 + i32.store offset=36 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $16 + i32.store offset=40 + local.get $16 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $0) + local.set $17 + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $17 + return + ) + (func $closure-stress/captureString (result i32) + (local $s i32) + (local $$env i32) + (local $2 i32) + (local $fn i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 2816 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 61 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/mutateStringRef (result i32) + (local $s i32) + (local $$env i32) + (local $2 i32) + (local $append i32) + (local $4 i32) + (local $get i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 2880 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 62 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $append + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 63 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $get + i32.store offset=4 + i32.const 3008 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + i32.const 3040 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + i32.const 3072 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $append + local.tee $8 + i32.store offset=16 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) +) diff --git a/tests/compiler/closure-stress.json b/tests/compiler/closure-stress.json new file mode 100644 index 0000000000..1bdd02b1be --- /dev/null +++ b/tests/compiler/closure-stress.json @@ -0,0 +1,4 @@ +{ + "asc_flags": [ + ] +} diff --git a/tests/compiler/closure-stress.release.wat b/tests/compiler/closure-stress.release.wat new file mode 100644 index 0000000000..0857a945d4 --- /dev/null +++ b/tests/compiler/closure-stress.release.wat @@ -0,0 +1,8444 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32) (result i32))) + (type $2 (func)) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func (result f64))) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32))) + (type $8 (func (result i64))) + (type $9 (func (result f32))) + (type $10 (func (param i32 i32 i32) (result i32))) + (type $11 (func (param i32 i32 i32 i32))) + (type $12 (func (param i32 i32 i64))) + (type $13 (func (param i64) (result i32))) + (type $14 (func (param f32) (result i32))) + (type $15 (func (param f64) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $closure-stress/counter1 (mut i32) (i32.const 0)) + (global $closure-stress/counter2 (mut i32) (i32.const 0)) + (global $closure-stress/addTo10 (mut i32) (i32.const 0)) + (global $closure-stress/greaterThan5 (mut i32) (i32.const 0)) + (global $closure-stress/add5 (mut i32) (i32.const 0)) + (global $closure-stress/add10 (mut i32) (i32.const 0)) + (global $closure-stress/double (mut i32) (i32.const 0)) + (global $closure-stress/triple (mut i32) (i32.const 0)) + (global $closure-stress/addThenDouble (mut i32) (i32.const 0)) + (global $closure-stress/callCount (mut i32) (i32.const 0)) + (global $closure-stress/fact (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36996)) + (memory $0 1) + (data $0 (i32.const 1036) "\1c") + (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") + (data $1 (i32.const 1068) "<") + (data $1.1 (i32.const 1080) "\02\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 $2 (i32.const 1132) "<") + (data $2.1 (i32.const 1144) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $5 (i32.const 1260) "<") + (data $5.1 (i32.const 1272) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $6 (i32.const 1324) ",") + (data $6.1 (i32.const 1336) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $8 (i32.const 1404) "<") + (data $8.1 (i32.const 1416) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $9 (i32.const 1468) "<") + (data $9.1 (i32.const 1480) "\02\00\00\00\"\00\00\00c\00l\00o\00s\00u\00r\00e\00-\00s\00t\00r\00e\00s\00s\00.\00t\00s") + (data $10 (i32.const 1532) "\1c") + (data $10.1 (i32.const 1544) "\05\00\00\00\08\00\00\00\02") + (data $11 (i32.const 1564) "\1c") + (data $11.1 (i32.const 1576) "\06\00\00\00\08\00\00\00\03") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\07\00\00\00\08\00\00\00\04") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\08\00\00\00\08\00\00\00\05") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\04\00\00\00\08\00\00\00\06") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\07\00\00\00\08\00\00\00\07") + (data $16 (i32.const 1724) "\1c") + (data $16.1 (i32.const 1736) "\04\00\00\00\08\00\00\00\08") + (data $17 (i32.const 1756) "\1c") + (data $17.1 (i32.const 1768) "\04\00\00\00\08\00\00\00\t") + (data $18 (i32.const 1788) "\1c") + (data $18.1 (i32.const 1800) "\04\00\00\00\08\00\00\00\n") + (data $19 (i32.const 1820) "\1c") + (data $19.1 (i32.const 1832) "\t\00\00\00\08\00\00\00\0b") + (data $20 (i32.const 1852) "\1c") + (data $20.1 (i32.const 1864) "\04\00\00\00\08\00\00\00\0c") + (data $21 (i32.const 1884) "\1c") + (data $21.1 (i32.const 1896) "\n\00\00\00\08\00\00\00\r") + (data $22 (i32.const 1916) "\1c") + (data $22.1 (i32.const 1928) "\n\00\00\00\08\00\00\00\0e") + (data $23 (i32.const 1948) "\1c") + (data $23.1 (i32.const 1960) "\04\00\00\00\08\00\00\00\0f") + (data $24 (i32.const 1980) "\1c") + (data $24.1 (i32.const 1992) "\n\00\00\00\08\00\00\00\10") + (data $25 (i32.const 2012) "\1c") + (data $25.1 (i32.const 2024) "\04\00\00\00\08\00\00\00\11") + (data $26 (i32.const 2044) "\1c") + (data $26.1 (i32.const 2056) "\0b\00\00\00\08\00\00\00\12") + (data $27 (i32.const 2076) "\1c") + (data $27.1 (i32.const 2088) "\0c\00\00\00\08\00\00\00\13") + (data $28 (i32.const 2108) ",") + (data $28.1 (i32.const 2120) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $29 (i32.const 2156) ",") + (data $29.1 (i32.const 2168) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $30 (i32.const 2204) "\1c") + (data $30.1 (i32.const 2216) "\04\00\00\00\08\00\00\00\14") + (data $31 (i32.const 2236) "\1c") + (data $31.1 (i32.const 2248) "\04\00\00\00\08\00\00\00\15") + (data $32 (i32.const 2268) "\1c") + (data $32.1 (i32.const 2280) "\04\00\00\00\08\00\00\00\16") + (data $33 (i32.const 2300) "|") + (data $33.1 (i32.const 2312) "\02\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 $34 (i32.const 2428) "\1c") + (data $34.1 (i32.const 2440) "\04\00\00\00\08\00\00\00\17") + (data $35 (i32.const 2460) "\1c") + (data $35.1 (i32.const 2472) "\04\00\00\00\08\00\00\00\18") + (data $36 (i32.const 2492) "\1c") + (data $36.1 (i32.const 2504) "\04\00\00\00\08\00\00\00\19") + (data $37 (i32.const 2524) "\1c") + (data $37.1 (i32.const 2536) "\04\00\00\00\08\00\00\00\1a") + (data $38 (i32.const 2556) "\1c") + (data $38.1 (i32.const 2568) "\n\00\00\00\08\00\00\00\1b") + (data $39 (i32.const 2588) "\1c") + (data $39.1 (i32.const 2600) "\04\00\00\00\08\00\00\00\1c") + (data $40 (i32.const 2620) "\1c") + (data $40.1 (i32.const 2632) "\n\00\00\00\08\00\00\00\1d") + (data $41 (i32.const 2652) "\1c") + (data $41.1 (i32.const 2664) "\04\00\00\00\08\00\00\00\1e") + (data $42 (i32.const 2684) "\1c") + (data $42.1 (i32.const 2696) "\0b\00\00\00\08\00\00\00\1f") + (data $43 (i32.const 2716) "\1c") + (data $43.1 (i32.const 2728) "\0c\00\00\00\08\00\00\00 ") + (data $44 (i32.const 2748) "\1c") + (data $44.1 (i32.const 2760) "\10\00\00\00\08\00\00\00!") + (data $45 (i32.const 2780) "\1c") + (data $45.1 (i32.const 2792) "\04\00\00\00\08\00\00\00\"") + (data $46 (i32.const 2812) "\1c") + (data $46.1 (i32.const 2824) "\0b\00\00\00\08\00\00\00#") + (data $47 (i32.const 2844) "\1c") + (data $47.1 (i32.const 2856) "\0b\00\00\00\08\00\00\00$") + (data $48 (i32.const 2876) "\1c") + (data $48.1 (i32.const 2888) "\0b\00\00\00\08\00\00\00%") + (data $49 (i32.const 2908) "\1c") + (data $49.1 (i32.const 2920) "\0b\00\00\00\08\00\00\00&") + (data $50 (i32.const 2940) "<") + (data $50.1 (i32.const 2952) "\02\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 $51 (i32.const 3004) "<") + (data $51.1 (i32.const 3016) "\02\00\00\00$\00\00\00K\00e\00y\00 \00d\00o\00e\00s\00 \00n\00o\00t\00 \00e\00x\00i\00s\00t") + (data $52 (i32.const 3068) ",") + (data $52.1 (i32.const 3080) "\02\00\00\00\16\00\00\00~\00l\00i\00b\00/\00m\00a\00p\00.\00t\00s") + (data $53 (i32.const 3116) "\1c") + (data $53.1 (i32.const 3128) "\0b\00\00\00\08\00\00\00\'") + (data $54 (i32.const 3148) "\1c") + (data $54.1 (i32.const 3160) "\04\00\00\00\08\00\00\00(") + (data $55 (i32.const 3180) "\1c") + (data $55.1 (i32.const 3192) "\04\00\00\00\08\00\00\00)") + (data $56 (i32.const 3212) "\1c") + (data $56.1 (i32.const 3224) "\04\00\00\00\08\00\00\00*") + (data $57 (i32.const 3244) "\1c") + (data $57.1 (i32.const 3256) "\04\00\00\00\08\00\00\00+") + (data $58 (i32.const 3276) "\1c") + (data $58.1 (i32.const 3288) "\04\00\00\00\08\00\00\00,") + (data $59 (i32.const 3308) "\1c") + (data $59.1 (i32.const 3320) "\04\00\00\00\08\00\00\00-") + (data $60 (i32.const 3340) "\1c") + (data $60.1 (i32.const 3352) "\0b\00\00\00\08\00\00\00.") + (data $61 (i32.const 3372) "\1c") + (data $61.1 (i32.const 3384) "\04\00\00\00\08\00\00\00/") + (data $62 (i32.const 3404) "\1c") + (data $62.1 (i32.const 3416) "\n\00\00\00\08\00\00\000") + (data $63 (i32.const 3436) "\1c") + (data $63.1 (i32.const 3448) "\n\00\00\00\08\00\00\001") + (data $64 (i32.const 3468) "\1c") + (data $64.1 (i32.const 3480) "\n\00\00\00\08\00\00\002") + (data $65 (i32.const 3500) "\1c") + (data $65.1 (i32.const 3512) "\n\00\00\00\08\00\00\003") + (data $66 (i32.const 3532) "\1c") + (data $66.1 (i32.const 3544) "\n\00\00\00\08\00\00\004") + (data $67 (i32.const 3564) "\1c") + (data $67.1 (i32.const 3576) "\04\00\00\00\08\00\00\005") + (data $68 (i32.const 3596) "\1c") + (data $68.1 (i32.const 3608) "\04\00\00\00\08\00\00\006") + (data $69 (i32.const 3628) "\1c") + (data $69.1 (i32.const 3640) "\04\00\00\00\08\00\00\007") + (data $70 (i32.const 3660) "\1c") + (data $70.1 (i32.const 3672) "\04\00\00\00\08\00\00\008") + (data $71 (i32.const 3692) "\1c") + (data $71.1 (i32.const 3704) "\04\00\00\00\08\00\00\009") + (data $72 (i32.const 3724) "\1c") + (data $72.1 (i32.const 3736) "\n\00\00\00\08\00\00\00:") + (data $73 (i32.const 3756) "\1c") + (data $73.1 (i32.const 3768) "\n\00\00\00\08\00\00\00;") + (data $74 (i32.const 3788) "\1c") + (data $74.1 (i32.const 3800) "\n\00\00\00\08\00\00\00<") + (data $75 (i32.const 3820) "\1c") + (data $75.1 (i32.const 3832) "\02\00\00\00\n\00\00\00H\00e\00l\00l\00o") + (data $76 (i32.const 3852) "\1c") + (data $76.1 (i32.const 3864) "\12\00\00\00\08\00\00\00=") + (data $77 (i32.const 3884) "\1c") + (data $77.1 (i32.const 3896) "\02\00\00\00\02\00\00\00A") + (data $78 (i32.const 3916) "\1c") + (data $78.1 (i32.const 3928) "\02") + (data $79 (i32.const 3948) "\1c") + (data $79.1 (i32.const 3960) "\13\00\00\00\08\00\00\00>") + (data $80 (i32.const 3980) "\1c") + (data $80.1 (i32.const 3992) "\12\00\00\00\08\00\00\00?") + (data $81 (i32.const 4012) "\1c") + (data $81.1 (i32.const 4024) "\02\00\00\00\02\00\00\00B") + (data $82 (i32.const 4044) "\1c") + (data $82.1 (i32.const 4056) "\02\00\00\00\02\00\00\00C") + (data $83 (i32.const 4076) "\1c") + (data $83.1 (i32.const 4088) "\02\00\00\00\02\00\00\00D") + (data $84 (i32.const 4108) "\1c") + (data $84.1 (i32.const 4120) "\02\00\00\00\08\00\00\00A\00B\00C\00D") + (data $85 (i32.const 4144) "\14\00\00\00 \00\00\00 \00\00\00 ") + (data $85.1 (i32.const 4200) "\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12") + (table $0 64 64 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/captureI32Param~anonymous|0 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/captureString~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $closure-stress/captureI32Param~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1280 + call $~lib/rt/itcms/__visit + i32.const 2128 + call $~lib/rt/itcms/__visit + i32.const 2320 + call $~lib/rt/itcms/__visit + i32.const 3024 + call $~lib/rt/itcms/__visit + i32.const 1088 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$346 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36996 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$346 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 4144 + i32.load + i32.gt_u + if + i32.const 1280 + i32.const 1344 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 4148 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (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 1424 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 201 + i32.const 14 + 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 1424 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1424 + i32.const 234 + i32.const 14 + 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 + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1424 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 37008 + i32.const 0 + i32.store + i32.const 38576 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 37008 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 37008 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 37008 + i32.const 38580 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 37008 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36996 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1152 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36996 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36996 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1424 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + 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 + 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 + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + 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 $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1088 + i32.const 1424 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1424 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1424 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1424 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1088 + i32.const 1152 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $closure-stress/captureI32Param (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureI64Param~anonymous|0 (result i64) + global.get $$~lib/__closure_env + i64.load + ) + (func $closure-stress/captureI64Param (param $0 i64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i64.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 2 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + ) + (func $closure-stress/captureF32Param~anonymous|0 (result f32) + global.get $$~lib/__closure_env + f32.load + ) + (func $closure-stress/captureF32Param (param $0 f32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $0 + f32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 3 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + ) + (func $closure-stress/captureF64Param~anonymous|0 (result f64) + global.get $$~lib/__closure_env + f64.load + ) + (func $closure-stress/captureF64Param (param $0 f64) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $0 + f64.store + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 4 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + ) + (func $closure-stress/captureBool~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load8_u + ) + (func $closure-stress/captureBool (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store8 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 5 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureMultipleI32~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=8 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.add + i32.add + ) + (func $closure-stress/captureMultipleI32 (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $3 + local.get $0 + i32.store + local.get $4 + local.get $1 + i32.store offset=8 + local.get $4 + local.get $2 + i32.store offset=12 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 6 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/captureMixedTypes~anonymous|0 (result f64) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load + f64.convert_i32_s + local.get $0 + i64.load offset=8 + f64.convert_i64_s + f64.add + local.get $0 + f32.load offset=16 + f64.promote_f32 + f64.add + local.get $0 + f64.load offset=24 + f64.add + ) + (func $closure-stress/capture8Params~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=28 + local.get $0 + i32.load offset=24 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + ) + (func $closure-stress/captureParamsAndLocals~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=12 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.add + i32.add + i32.add + ) + (func $closure-stress/makeCounter~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + local.get $0 + i32.load + ) + (func $closure-stress/makeCounter (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 10 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/testBidirectionalMutation~anonymous|0 (param $0 i32) + global.get $$~lib/__closure_env + local.get $0 + i32.store + ) + (func $closure-stress/testSharedMutation~anonymous|0 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.add + i32.store + ) + (func $closure-stress/testSharedMutation~anonymous|1 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.sub + i32.store + ) + (func $closure-stress/testOuterScopeMutation~anonymous|0 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 1 + i32.shl + i32.store + ) + (func $closure-stress/curriedAdd~anonymous|0 (param $0 i32) (result i32) + global.get $$~lib/__closure_env + i32.load + local.get $0 + i32.add + ) + (func $closure-stress/makeGreaterThan~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $$~lib/__closure_env + i32.load + i32.gt_s + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1152 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-stress/simpleClosureArray~anonymous|1 (result i32) + global.get $$~lib/__closure_env + i32.load offset=4 + ) + (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) + global.get $$~lib/__closure_env + i32.load offset=8 + ) + (func $closure-stress/testMapWithClosure~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $$~lib/__closure_env + i32.load + i32.mul + ) + (func $closure-stress/testFilterWithClosure~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $$~lib/__closure_env + i32.load + i32.ge_s + ) + (func $closure-stress/testReduceWithClosure~anonymous|0 (param $0 i32) (param $1 i32) (result i32) + local.get $0 + local.get $1 + i32.add + ) + (func $closure-stress/testReduceWithClosure~anonymous|1 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.get $0 + i32.load + i32.add + ) + (func $closure-stress/makeAdder~anonymous|0 (param $0 i32) (result i32) + local.get $0 + global.get $$~lib/__closure_env + i32.load + i32.add + ) + (func $closure-stress/makeAdder (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 35 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/makeMultiplier (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 36 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/expensiveComputation (param $0 i32) (result i32) + global.get $closure-stress/callCount + i32.const 1 + i32.add + global.set $closure-stress/callCount + local.get $0 + local.get $0 + i32.mul + ) + (func $closure-stress/emptyClosure~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-stress/captureOnlyNoParams~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.get $0 + i32.load offset=4 + i32.add + ) + (func $closure-stress/multipleClosureReturns (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 10 + i32.store + local.get $2 + i32.const 20 + i32.store offset=8 + local.get $2 + i32.const 30 + i32.store offset=12 + local.get $0 + if + local.get $0 + i32.const 1 + i32.eq + if + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 44 + i32.store + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 45 + i32.store + end + else + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 43 + i32.store + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-stress/makeFactorial~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + i32.const 1 + local.set $2 + i32.const 2 + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.ge_s + if + local.get $1 + local.get $2 + i32.mul + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + local.get $2 + ) + (func $closure-stress/captureSmallTypes~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load16_u offset=4 + local.get $0 + i32.load16_s offset=2 + local.get $0 + i32.load8_s + local.get $0 + i32.load8_u offset=1 + i32.add + i32.add + i32.add + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|1 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 2 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|2 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 3 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|3 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 4 + i32.add + i32.store + ) + (func $closure-stress/manyClosuresSameEnv~anonymous|4 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 5 + i32.add + i32.store + ) + (func $closure-stress/manyCaptures~anonymous|0 (result i32) + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=44 + local.get $0 + i32.load offset=40 + local.get $0 + i32.load offset=36 + local.get $0 + i32.load offset=32 + local.get $0 + i32.load offset=28 + local.get $0 + i32.load offset=24 + local.get $0 + i32.load offset=20 + local.get $0 + i32.load offset=16 + local.get $0 + i32.load offset=12 + local.get $0 + i32.load offset=8 + local.get $0 + i32.load + local.get $0 + i32.load offset=4 + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + i32.add + ) + (func $closure-stress/simpleIIFE~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + i32.const 9 + i32.add + ) + (func $closure-stress/interleavedClosures~anonymous|2 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 10 + i32.add + i32.store + ) + (func $closure-stress/interleavedClosures~anonymous|3 + (local $0 i32) + global.get $$~lib/__closure_env + local.tee $0 + local.get $0 + i32.load + i32.const 100 + i32.add + i32.store + ) + (func $closure-stress/captureString~anonymous|0 (result i32) + global.get $$~lib/__closure_env + i32.load + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $invalid + block $"~lib/map/Map" + block $closure-stress/Counter + block $~lib/array/Array + block $~lib/array/Array<%28%29=>i32> + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $folding-inner1 $~lib/array/Array<%28%29=>i32> $~lib/array/Array $closure-stress/Counter $folding-inner1 $"~lib/map/Map" $folding-inner1 $folding-inner1 $invalid + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + br $folding-inner2 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + br $folding-inner2 + end + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner3 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:closure-stress + ) + (func $~lib/array/Array<%28%29=>i32>#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 2128 + i32.const 2176 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/ensureCapacity (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $1 + i32.const 268435455 + i32.gt_u + if + i32.const 2128 + i32.const 2176 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$294 + i32.const 1073741820 + local.get $2 + i32.const 1 + i32.shl + local.tee $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.const 8 + local.get $1 + local.get $1 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $1 + local.get $1 + local.get $2 + i32.lt_u + select + local.tee $3 + local.get $0 + i32.load + local.tee $2 + i32.const 20 + i32.sub + local.tee $4 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $4 + local.get $3 + i32.store offset=16 + local.get $2 + local.set $1 + br $__inlined_func$~lib/rt/itcms/__renew$294 + end + local.get $3 + local.get $4 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $1 + local.get $2 + local.get $3 + local.get $4 + i32.load offset=16 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_u + select + memory.copy + end + local.get $1 + local.get $2 + i32.ne + if + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $3 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1280 + i32.const 2176 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28%29=>i32>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 2176 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 2320 + i32.const 2176 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $~lib/array/Array#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + local.get $0 + i32.const 268435455 + i32.gt_u + if + i32.const 2128 + i32.const 2176 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + local.get $0 + local.get $0 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $3 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/array/Array#__set (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + local.get $1 + i32.const 0 + i32.lt_s + if + i32.const 1280 + i32.const 2176 + i32.const 130 + i32.const 22 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $3 + i32.store offset=12 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1280 + i32.const 2176 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureArray~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.const 2 + call $~lib/array/Array#__get + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/mutateCapturedArray~anonymous|0 + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $2 + i32.store offset=4 + local.get $1 + i32.const 0 + local.get $2 + i32.const 0 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $2 + i32.store offset=4 + local.get $1 + i32.const 1 + local.get $2 + i32.const 1 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store offset=4 + local.get $1 + i32.const 2 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + i32.const 1 + i32.shl + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/captureClassInstance~anonymous|1 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $"~lib/map/Map#find" (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=4 + i32.and + i32.const 2 + i32.shl + i32.add + i32.load + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.load offset=8 + local.tee $2 + i32.const 1 + i32.and + if (result i32) + i32.const 0 + else + local.get $1 + local.get $0 + i32.load + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + local.get $2 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $"~lib/map/Map#set" (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 $10 i32) + (local $11 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $1 + local.get $1 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + i32.const 15 + i32.shr_u + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $3 + i32.const 13 + i32.shr_u + local.get $3 + i32.xor + i32.const -1028477379 + i32.mul + local.tee $3 + i32.const 16 + i32.shr_u + local.get $3 + i32.xor + local.tee $7 + call $"~lib/map/Map#find" + local.tee $3 + if + local.get $3 + local.get $2 + i32.store offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=12 + i32.const 3 + i32.mul + i32.const 4 + i32.div_s + i32.lt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.shl + i32.const 1 + i32.or + end + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $9 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.const 3 + i32.shl + i32.const 3 + i32.div_s + local.tee $6 + i32.const 12 + i32.mul + call $~lib/arraybuffer/ArrayBuffer#constructor + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=8 + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $10 + local.get $0 + i32.load offset=16 + i32.const 12 + i32.mul + i32.add + local.set $5 + local.get $4 + local.set $3 + loop $while-continue|0 + local.get $5 + local.get $10 + i32.ne + if + local.get $10 + i32.load offset=8 + i32.const 1 + i32.and + i32.eqz + if + local.get $3 + local.get $10 + i32.load + local.tee $11 + i32.store + local.get $3 + local.get $10 + i32.load offset=4 + i32.store offset=4 + local.get $3 + local.get $9 + local.get $8 + local.get $11 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $11 + local.get $11 + i32.const 15 + i32.shr_u + i32.xor + i32.const -2048144777 + i32.mul + local.tee $11 + local.get $11 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $11 + local.get $11 + i32.const 16 + i32.shr_u + i32.xor + i32.and + i32.const 2 + i32.shl + i32.add + local.tee $11 + i32.load + i32.store offset=8 + local.get $11 + local.get $3 + i32.store + local.get $3 + i32.const 12 + i32.add + local.set $3 + end + local.get $10 + i32.const 12 + i32.add + local.set $10 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=12 + local.get $0 + local.get $9 + i32.store + local.get $0 + local.get $9 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $8 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $0 + local.get $4 + i32.store offset=8 + local.get $0 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + local.get $6 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $0 + i32.load offset=20 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=16 + local.tee $4 + i32.const 1 + i32.add + i32.store offset=16 + local.get $3 + local.get $4 + i32.const 12 + i32.mul + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $0 + i32.load offset=20 + i32.const 1 + i32.add + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $3 + local.get $1 + local.get $7 + local.get $0 + i32.load offset=4 + 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 + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-stress/memoize~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $0 + local.get $0 + i32.const -1028477379 + i32.mul + i32.const 374761397 + i32.add + i32.const 17 + i32.rotl + i32.const 668265263 + i32.mul + local.tee $3 + local.get $3 + i32.const 15 + i32.shr_u + local.tee $1 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $4 + local.get $4 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $4 + local.get $4 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + i32.const 0 + i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + local.get $3 + i32.xor + i32.const -2048144777 + i32.mul + local.tee $0 + local.get $0 + i32.const 13 + i32.shr_u + i32.xor + i32.const -1028477379 + i32.mul + local.tee $0 + local.get $0 + i32.const 16 + i32.shr_u + i32.xor + call $"~lib/map/Map#find" + local.tee $0 + i32.eqz + if + i32.const 3024 + i32.const 3088 + i32.const 105 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=4 + local.tee $2 + i32.store + local.get $2 + local.get $0 + local.get $1 + call $"~lib/map/Map#set" + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$221 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$221 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-stress/mutateStringRef~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $4 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $1 + i32.store + block $__inlined_func$~lib/string/String#concat$354 + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $5 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3936 + local.set $0 + br $__inlined_func$~lib/string/String#concat$354 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $5 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $start:closure-stress + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 168 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 168 + memory.fill + memory.size + i32.const 16 + i32.shl + i32.const 36996 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/pinSpace + i32.const 1236 + i32.const 1232 + i32.store + i32.const 1240 + i32.const 1232 + i32.store + i32.const 1232 + global.set $~lib/rt/itcms/toSpace + i32.const 1380 + i32.const 1376 + i32.store + i32.const 1384 + i32.const 1376 + i32.store + i32.const 1376 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 42 + call $closure-stress/captureI32Param + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const -1 + call $closure-stress/captureI32Param + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 14 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2147483647 + call $closure-stress/captureI32Param + local.tee $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2147483647 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 15 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 42 + call $closure-stress/captureI64Param + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $8) + i64.const 42 + i64.ne + if + i32.const 0 + i32.const 1488 + i32.const 21 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 9223372036854775807 + call $closure-stress/captureI64Param + local.tee $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $8) + i64.const 9223372036854775807 + i64.ne + if + i32.const 0 + i32.const 1488 + i32.const 22 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f32.const 3.140000104904175 + call $closure-stress/captureF32Param + local.tee $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $9) + f32.const 3.140000104904175 + f32.ne + if + i32.const 0 + i32.const 1488 + i32.const 28 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f32.const 0 + call $closure-stress/captureF32Param + local.tee $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $9) + f32.const 0 + f32.ne + if + i32.const 0 + i32.const 1488 + i32.const 29 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const 3.141592653589793 + call $closure-stress/captureF64Param + local.tee $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $5) + f64.const 3.141592653589793 + f64.ne + if + i32.const 0 + i32.const 1488 + i32.const 35 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + f64.const inf + call $closure-stress/captureF64Param + local.tee $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $5) + f64.const inf + f64.ne + if + i32.const 0 + i32.const 1488 + i32.const 36 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-stress/captureBool + local.tee $0 + i32.store offset=36 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 42 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-stress/captureBool + local.tee $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1488 + i32.const 43 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + i32.const 2 + i32.const 3 + call $closure-stress/captureMultipleI32 + local.tee $0 + i32.store offset=44 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 53 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + i32.const 200 + i32.const 300 + call $closure-stress/captureMultipleI32 + local.tee $0 + i32.store offset=48 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 600 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 54 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 1 + i32.store + local.get $4 + i64.const 2 + i64.store offset=12 + local.get $4 + f32.const 3 + f32.store offset=20 + local.get $4 + f64.const 4 + f64.store offset=28 + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 7 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + i32.store offset=52 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + f64.const 10 + f64.ne + if + i32.const 0 + i32.const 1488 + i32.const 60 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 32 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 1 + i32.store + local.get $4 + i32.const 2 + i32.store offset=8 + local.get $4 + i32.const 3 + i32.store offset=12 + local.get $4 + i32.const 4 + i32.store offset=16 + local.get $4 + i32.const 5 + i32.store offset=20 + local.get $4 + i32.const 6 + i32.store offset=24 + local.get $4 + i32.const 7 + i32.store offset=28 + local.get $4 + i32.const 8 + i32.store offset=32 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 8 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + i32.store offset=56 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 36 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 69 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $5 + i32.const 1 + i32.store + local.get $4 + i32.const 2 + i32.store offset=8 + local.get $4 + i32.const 100 + i32.store offset=12 + local.get $4 + i32.const 200 + i32.store offset=16 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 9 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + i32.store offset=60 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 303 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 77 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter1 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=64 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 92 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=68 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 93 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=72 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 94 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/makeCounter + global.set $closure-stress/counter2 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter2 + local.tee $0 + i32.store offset=76 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 96 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/counter1 + local.tee $0 + i32.store offset=80 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 97 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 11 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 12 + i32.store + local.get $6 + local.get $0 + i32.store offset=4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 10 + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 106 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 20 + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 108 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 112 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 13 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 14 + i32.store + local.get $6 + local.get $0 + i32.store offset=4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $7 + i32.const 15 + i32.store + local.get $7 + local.get $0 + i32.store offset=4 + local.get $7 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=12 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=36 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 127 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 28 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 16 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 17 + i32.store + local.get $6 + local.get $0 + i32.store offset=4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 136 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 138 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=24 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 28 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 142 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 10 + i32.store + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 18 + i32.store + local.get $4 + local.get $0 + i32.store offset=4 + local.get $4 + global.set $closure-stress/addTo10 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addTo10 + local.tee $0 + i32.store offset=84 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 153 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addTo10 + local.tee $0 + i32.store offset=88 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 20 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 154 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 5 + i32.store + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 19 + i32.store + local.get $4 + local.get $0 + i32.store offset=4 + local.get $4 + global.set $closure-stress/greaterThan5 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/greaterThan5 + local.tee $0 + i32.store offset=92 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 10 + local.get $0 + i32.load + call_indirect (type $1) + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 161 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/greaterThan5 + local.tee $0 + i32.store offset=96 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + if + i32.const 0 + i32.const 1488 + i32.const 162 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $5 + i32.store + local.get $0 + i32.const 10 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 20 + i32.store + local.get $6 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + i32.const 0 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 20 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 21 + i32.store + local.get $6 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $5 + i32.const 1 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 30 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 22 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $5 + i32.const 2 + local.get $0 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 183 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + call $closure-stress/closureInConditional + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 199 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + call $closure-stress/closureInConditional + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 200 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 42 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 25 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 216 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $4 + i32.const 3 + call $~lib/array/Array#constructor + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 26 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 233 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $4 + i32.const 3 + call $~lib/array/Array#constructor + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + local.get $5 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $5 + i32.store + local.get $5 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 27 + i32.store + local.get $5 + local.get $4 + i32.store offset=4 + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 28 + i32.store + local.get $6 + local.get $4 + i32.store offset=4 + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 6 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 250 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 252 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 257 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 29 + i32.store + local.get $4 + local.get $5 + i32.store offset=4 + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 30 + i32.store + local.get $6 + local.get $5 + i32.store offset=4 + local.get $6 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=20 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 280 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$closure-stress/testMapWithClosure$4 (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner00 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 31 + i32.store + local.get $6 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner00 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/array/Array#get:length + call $~lib/array/Array#constructor + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + local.get $3 + call $~lib/array/Array#__get + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + local.get $3 + local.get $7 + local.get $6 + i32.load + call_indirect (type $1) + call $~lib/array/Array#__set + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $3 + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.get $3 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$closure-stress/testMapWithClosure$4 + end + br $folding-inner1 + end + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 306 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 5 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + loop $for-loop|01 + local.get $2 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $2 + local.get $2 + call $~lib/array/Array#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|01 + end + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 32 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + block $__inlined_func$closure-stress/filterArray$5 (result i32) + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner02 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner02 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/array/Array#constructor + local.tee $0 + i32.store + loop $for-loop|03 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $~lib/array/Array#get:length + local.get $3 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $3 + call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $1) + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=12 + local.get $4 + local.get $3 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner02 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $7 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + end + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|03 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + br $__inlined_func$closure-stress/filterArray$5 + end + br $folding-inner1 + end + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#get:length + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 330 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + block $__inlined_func$closure-stress/testReduceWithClosure$6 (result i32) + i32.const 0 + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner04 + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner04 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.const 4 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.const 5 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2768 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner04 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + loop $for-loop|05 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.get $0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $0 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 2768 + i32.store offset=4 + i32.const 2772 + i32.load + global.set $$~lib/__closure_env + local.get $1 + local.get $5 + i32.const 2768 + i32.load + call_indirect (type $4) + local.set $1 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|05 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 34 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + br $__inlined_func$closure-stress/testReduceWithClosure$6 + end + br $folding-inner1 + end + i32.const 115 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeAdder + global.set $closure-stress/add5 + i32.const 10 + call $closure-stress/makeAdder + global.set $closure-stress/add10 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $0 + i32.store offset=100 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=104 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=112 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 0 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=108 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure-stress/makeMultiplier + global.set $closure-stress/double + i32.const 3 + call $closure-stress/makeMultiplier + global.set $closure-stress/triple + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=116 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=120 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=128 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 4 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $1 + i32.store offset=124 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=136 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $3 + local.get $0 + i32.store + local.get $2 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 37 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + global.set $closure-stress/addThenDouble + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addThenDouble + local.tee $0 + i32.store offset=140 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + global.set $closure-stress/callCount + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + i32.const 2928 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.store offset=8 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 39 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 418 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 424 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3168 + i32.store offset=144 + i32.const 3172 + i32.load + global.set $$~lib/__closure_env + i32.const 3168 + i32.load + call_indirect (type $0) + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 434 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 10 + i32.store + local.get $0 + i32.const 20 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 41 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store offset=4 + i32.const 3236 + i32.load + global.set $$~lib/__closure_env + i32.const 3232 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 451 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=148 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 467 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=152 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 468 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $closure-stress/multipleClosureReturns + local.tee $0 + i32.store offset=156 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3360 + global.set $closure-stress/fact + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=160 + i32.const 3364 + i32.load + global.set $$~lib/__closure_env + i32.const 5 + i32.const 3360 + i32.load + call_indirect (type $1) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/fact + local.tee $0 + i32.store offset=164 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 6 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 720 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 484 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 10 + i32.store8 + local.get $0 + i32.const 20 + i32.store8 offset=5 + local.get $0 + i32.const 30 + i32.store16 offset=6 + local.get $0 + i32.const 40 + i32.store16 offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 47 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 100 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 496 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 48 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 48 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 49 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 50 + i32.store + local.get $4 + local.get $0 + i32.store offset=4 + local.get $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 51 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 52 + i32.store + local.get $6 + local.get $0 + i32.store offset=4 + local.get $6 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $7 + i32.const 53 + i32.store + local.get $7 + local.get $0 + i32.store offset=4 + local.get $7 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=40 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=44 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 517 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 48 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.tee $1 + i32.const 1 + i32.store + local.get $0 + i32.const 2 + i32.store offset=8 + local.get $0 + i32.const 3 + i32.store offset=12 + local.get $0 + i32.const 4 + i32.store offset=16 + local.get $0 + i32.const 5 + i32.store offset=20 + local.get $0 + i32.const 6 + i32.store offset=24 + local.get $0 + i32.const 7 + i32.store offset=28 + local.get $0 + i32.const 8 + i32.store offset=32 + local.get $0 + i32.const 9 + i32.store offset=36 + local.get $0 + i32.const 10 + i32.store offset=40 + local.get $0 + i32.const 11 + i32.store offset=44 + local.get $0 + i32.const 12 + i32.store offset=48 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 54 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 78 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 529 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 55 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 539 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $0 + i32.store + i32.const 0 + local.set $2 + loop $for-loop|00 + local.get $2 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $2 + i32.const 10 + i32.mul + i32.store + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 56 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $0 + local.get $2 + local.get $3 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|00 + end + end + i32.const 0 + local.set $2 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $2 + i32.add + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.const 450 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 564 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 57 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 58 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 59 + i32.store + local.get $4 + local.get $0 + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 60 + i32.store + local.get $5 + local.get $0 + i32.store offset=4 + local.get $5 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 123 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 585 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 3840 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 61 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 3840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 597 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + i32.const 3904 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 62 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 63 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 4032 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 4064 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 4096 + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 4128 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1488 + i32.const 611 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 168 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-stress/closureInConditional (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 10 + i32.store + local.get $2 + i32.const 20 + i32.store offset=8 + local.get $0 + if + global.get $~lib/memory/__stack_pointer + local.set $2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 23 + i32.store + else + global.get $~lib/memory/__stack_pointer + local.set $2 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 24 + i32.store + end + local.get $0 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/compose~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load offset=4 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/arraybuffer/ArrayBuffer#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4228 + i32.lt_s + if + i32.const 37024 + i32.const 37072 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.const 1073741820 + i32.gt_u + if + i32.const 2128 + i32.const 2960 + i32.const 52 + i32.const 43 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/closure-stress.ts b/tests/compiler/closure-stress.ts new file mode 100644 index 0000000000..1c3bcb625b --- /dev/null +++ b/tests/compiler/closure-stress.ts @@ -0,0 +1,616 @@ +// ============================================================================= +// CLOSURE STRESS TEST - Comprehensive closure testing for AssemblyScript +// ============================================================================= + +// ============================================================================= +// SECTION 1: Basic Capture Patterns +// ============================================================================= + +// Test 1.1: Capture single i32 parameter +function captureI32Param(x: i32): () => i32 { + return (): i32 => x; +} +assert(captureI32Param(42)() == 42); +assert(captureI32Param(-1)() == -1); +assert(captureI32Param(0x7FFFFFFF)() == 0x7FFFFFFF); + +// Test 1.2: Capture single i64 parameter +function captureI64Param(x: i64): () => i64 { + return (): i64 => x; +} +assert(captureI64Param(42)() == 42); +assert(captureI64Param(0x7FFFFFFFFFFFFFFF)() == 0x7FFFFFFFFFFFFFFF); + +// Test 1.3: Capture single f32 parameter +function captureF32Param(x: f32): () => f32 { + return (): f32 => x; +} +assert(captureF32Param(3.14)() == 3.14); +assert(captureF32Param(0.0)() == 0.0); + +// Test 1.4: Capture single f64 parameter +function captureF64Param(x: f64): () => f64 { + return (): f64 => x; +} +assert(captureF64Param(3.141592653589793)() == 3.141592653589793); +assert(captureF64Param(Infinity)() == Infinity); + +// Test 1.5: Capture boolean +function captureBool(x: bool): () => bool { + return (): bool => x; +} +assert(captureBool(true)() == true); +assert(captureBool(false)() == false); + +// ============================================================================= +// SECTION 2: Multiple Captures with Different Types +// ============================================================================= + +// Test 2.1: Capture multiple i32s +function captureMultipleI32(a: i32, b: i32, c: i32): () => i32 { + return (): i32 => a + b + c; +} +assert(captureMultipleI32(1, 2, 3)() == 6); +assert(captureMultipleI32(100, 200, 300)() == 600); + +// Test 2.2: Capture mixed types (i32, i64, f32, f64) +function captureMixedTypes(a: i32, b: i64, c: f32, d: f64): () => f64 { + return (): f64 => a + b + c + d; +} +assert(captureMixedTypes(1, 2, 3.0, 4.0)() == 10.0); + +// Test 2.3: Capture 8 parameters (stress test alignment) +function capture8Params( + a: i32, b: i32, c: i32, d: i32, + e: i32, f: i32, g: i32, h: i32 +): () => i32 { + return (): i32 => a + b + c + d + e + f + g + h; +} +assert(capture8Params(1, 2, 3, 4, 5, 6, 7, 8)() == 36); + +// Test 2.4: Capture parameters and locals mixed +function captureParamsAndLocals(a: i32, b: i32): () => i32 { + let c: i32 = 100; + let d: i32 = 200; + return (): i32 => a + b + c + d; +} +assert(captureParamsAndLocals(1, 2)() == 303); + +// ============================================================================= +// SECTION 3: Mutable Captures (Reference Semantics) +// ============================================================================= + +// Test 3.1: Simple counter +function makeCounter(): () => i32 { + let count: i32 = 0; + return (): i32 => { + count = count + 1; + return count; + }; +} +let counter1 = makeCounter(); +assert(counter1() == 1); +assert(counter1() == 2); +assert(counter1() == 3); +let counter2 = makeCounter(); // New counter should start at 0 +assert(counter2() == 1); +assert(counter1() == 4); // Original counter continues + +// Test 3.2: Bidirectional mutation +function testBidirectionalMutation(): i32 { + let value: i32 = 0; + let setter = (x: i32): void => { value = x; }; + let getter = (): i32 => value; + + setter(10); + assert(getter() == 10); + setter(20); + assert(getter() == 20); + + return getter(); +} +assert(testBidirectionalMutation() == 20); + +// Test 3.3: Multiple closures mutating same variable +function testSharedMutation(): i32 { + let value: i32 = 0; + let inc = (): void => { value = value + 1; }; + let dec = (): void => { value = value - 1; }; + let get = (): i32 => value; + + inc(); inc(); inc(); // value = 3 + dec(); // value = 2 + inc(); inc(); // value = 4 + + return get(); +} +assert(testSharedMutation() == 4); + +// Test 3.4: Mutation affects outer scope +function testOuterScopeMutation(): i32 { + let value: i32 = 5; + let double = (): void => { value = value * 2; }; + let get = (): i32 => value; + + double(); // value = 10 + assert(get() == 10); + double(); // value = 20 + assert(get() == 20); + + return get(); +} +assert(testOuterScopeMutation() == 20); + +// ============================================================================= +// SECTION 4: Simple Currying (single level capture only) +// ============================================================================= + +// Test 4.1: Simple currying pattern +function curriedAdd(a: i32): (b: i32) => i32 { + return (b: i32): i32 => a + b; +} +let addTo10 = curriedAdd(10); +assert(addTo10(5) == 15); +assert(addTo10(20) == 30); + +// Test 4.2: Another currying example +function makeGreaterThan(threshold: i32): (x: i32) => bool { + return (x: i32): bool => x > threshold; +} +let greaterThan5 = makeGreaterThan(5); +assert(greaterThan5(10) == true); +assert(greaterThan5(3) == false); + +// ============================================================================= +// SECTION 5: Closures with Complex Control Flow +// ============================================================================= + +// Test 5.1: Simple array of closures +function simpleClosureArray(): i32 { + let fns = new Array<() => i32>(3); + + let v0: i32 = 10; + fns[0] = (): i32 => v0; + + let v1: i32 = 20; + fns[1] = (): i32 => v1; + + let v2: i32 = 30; + fns[2] = (): i32 => v2; + + return fns[0]() + fns[1]() + fns[2](); +} +assert(simpleClosureArray() == 60); + +// Test 5.2: Closure in conditional +function closureInConditional(useFirst: bool): i32 { + let a: i32 = 10; + let b: i32 = 20; + + let getter: () => i32; + if (useFirst) { + getter = (): i32 => a; + } else { + getter = (): i32 => b; + } + + return getter(); +} +assert(closureInConditional(true) == 10); +assert(closureInConditional(false) == 20); + +// Test 5.3: Closure escaping try block (simulated) +function closureEscapingBlock(): i32 { + let value: i32 = 0; + let captured: () => i32; + + { + let inner: i32 = 42; + captured = (): i32 => inner; + value = captured(); + } + + // Inner scope ended but closure still works + return captured(); +} +assert(closureEscapingBlock() == 42); + +// ============================================================================= +// SECTION 6: Closures with Objects and Arrays +// ============================================================================= + +// Test 6.1: Capture array reference +function captureArray(): i32 { + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let sum = (): i32 => arr[0] + arr[1] + arr[2]; + + return sum(); +} +assert(captureArray() == 6); + +// Test 6.2: Mutate captured array +function mutateCapturedArray(): i32 { + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let doubleAll = (): void => { + arr[0] = arr[0] * 2; + arr[1] = arr[1] * 2; + arr[2] = arr[2] * 2; + }; + + let sum = (): i32 => arr[0] + arr[1] + arr[2]; + + assert(sum() == 6); + doubleAll(); + assert(sum() == 12); + doubleAll(); + + return sum(); +} +assert(mutateCapturedArray() == 24); + +// Test 6.3: Capture class instance +class Counter { + value: i32 = 0; + + increment(): void { + this.value++; + } +} + +function captureClassInstance(): i32 { + let c = new Counter(); + + let inc = (): void => { c.value = c.value + 1; }; + let get = (): i32 => c.value; + + inc(); + inc(); + inc(); + + return get(); +} +assert(captureClassInstance() == 3); + +// ============================================================================= +// SECTION 7: Higher-Order Functions with Closures +// ============================================================================= + +// Test 7.1: Map-like operation +function mapArray(arr: Array, fn: (x: i32) => i32): Array { + let result = new Array(arr.length); + for (let i: i32 = 0; i < arr.length; i++) { + result[i] = fn(arr[i]); + } + return result; +} + +function testMapWithClosure(): i32 { + let multiplier: i32 = 10; + let arr = new Array(3); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + + let result = mapArray(arr, (x: i32): i32 => x * multiplier); + + return result[0] + result[1] + result[2]; // 10 + 20 + 30 +} +assert(testMapWithClosure() == 60); + +// Test 7.2: Filter-like operation +function filterArray(arr: Array, pred: (x: i32) => bool): Array { + let result = new Array(0); + for (let i: i32 = 0; i < arr.length; i++) { + if (pred(arr[i])) { + result.push(arr[i]); + } + } + return result; +} + +function testFilterWithClosure(): i32 { + let threshold: i32 = 5; + let arr = new Array(10); + for (let i: i32 = 0; i < 10; i++) { + arr[i] = i; + } + + let result = filterArray(arr, (x: i32): bool => x >= threshold); + + return result.length; // 5, 6, 7, 8, 9 = 5 elements +} +assert(testFilterWithClosure() == 5); + +// Test 7.3: Reduce-like operation +function reduceArray(arr: Array, fn: (acc: i32, x: i32) => i32, initial: i32): i32 { + let acc = initial; + for (let i: i32 = 0; i < arr.length; i++) { + acc = fn(acc, arr[i]); + } + return acc; +} + +function testReduceWithClosure(): i32 { + let bonus: i32 = 100; + let arr = new Array(5); + arr[0] = 1; + arr[1] = 2; + arr[2] = 3; + arr[3] = 4; + arr[4] = 5; + + // Sum all elements and add bonus at the end + let result = reduceArray(arr, (acc: i32, x: i32): i32 => acc + x, 0); + + let addBonus = (): i32 => result + bonus; + + return addBonus(); // 15 + 100 +} +assert(testReduceWithClosure() == 115); + +// ============================================================================= +// SECTION 8: Closure Factory Patterns +// ============================================================================= + +// Test 8.1: Adder factory +function makeAdder(amount: i32): (x: i32) => i32 { + return (x: i32): i32 => x + amount; +} +let add5 = makeAdder(5); +let add10 = makeAdder(10); +assert(add5(3) == 8); +assert(add10(3) == 13); +assert(add5(add10(0)) == 15); + +// Test 8.2: Multiplier factory +function makeMultiplier(factor: i32): (x: i32) => i32 { + return (x: i32): i32 => x * factor; +} +let double = makeMultiplier(2); +let triple = makeMultiplier(3); +assert(double(5) == 10); +assert(triple(5) == 15); +assert(double(triple(4)) == 24); + +// Test 8.3: Compose functions +function compose(f: (x: i32) => i32, g: (x: i32) => i32): (x: i32) => i32 { + return (x: i32): i32 => f(g(x)); +} +let addThenDouble = compose(double, add5); +assert(addThenDouble(3) == 16); // (3 + 5) * 2 = 16 + +// Test 8.4: Memoization pattern +function memoize(fn: (x: i32) => i32): (x: i32) => i32 { + let cache = new Map(); + return (x: i32): i32 => { + if (cache.has(x)) { + return cache.get(x); + } + let result = fn(x); + cache.set(x, result); + return result; + }; +} + +let callCount: i32 = 0; +function expensiveComputation(x: i32): i32 { + callCount++; + return x * x; +} + +function testMemoization(): i32 { + callCount = 0; + let memoized = memoize(expensiveComputation); + + assert(memoized(5) == 25); + assert(callCount == 1); + assert(memoized(5) == 25); // Should use cache + assert(callCount == 1); + assert(memoized(3) == 9); + assert(callCount == 2); + assert(memoized(5) == 25); // Still cached + assert(callCount == 2); + + return callCount; +} +assert(testMemoization() == 2); + +// ============================================================================= +// SECTION 9: Edge Cases and Corner Cases +// ============================================================================= + +// Test 9.1: Empty closure (captures nothing) +function emptyClosure(): () => i32 { + return (): i32 => 42; +} +assert(emptyClosure()() == 42); + +// Test 9.2: Capture only, no parameters +function captureOnlyNoParams(): i32 { + let x: i32 = 10; + let y: i32 = 20; + let fn = (): i32 => x + y; + return fn(); +} +assert(captureOnlyNoParams() == 30); + +// Test 9.3: Closure that ignores captured value +function ignoreCapture(): i32 { + let unused: i32 = 999; + let fn = (): i32 => 42; + return fn(); +} +assert(ignoreCapture() == 42); + +// Test 9.4: Multiple returns of same closure type +function multipleClosureReturns(which: i32): () => i32 { + let a: i32 = 10; + let b: i32 = 20; + let c: i32 = 30; + + if (which == 0) { + return (): i32 => a; + } else if (which == 1) { + return (): i32 => b; + } else { + return (): i32 => c; + } +} +assert(multipleClosureReturns(0)() == 10); +assert(multipleClosureReturns(1)() == 20); +assert(multipleClosureReturns(2)() == 30); + +// Test 9.5: Recursive closure pattern (using wrapper) +function makeFactorial(): (n: i32) => i32 { + // Use a simple iterative approach since recursive closures are complex + return (n: i32): i32 => { + let result: i32 = 1; + for (let i: i32 = 2; i <= n; i++) { + result = result * i; + } + return result; + }; +} +let fact = makeFactorial(); +assert(fact(5) == 120); +assert(fact(6) == 720); + +// Test 9.6: Closure with i8/u8/i16/u16 captures +function captureSmallTypes(): i32 { + let a: i8 = 10; + let b: u8 = 20; + let c: i16 = 30; + let d: u16 = 40; + + let fn = (): i32 => a + b + c + d; + return fn(); +} +assert(captureSmallTypes() == 100); + +// ============================================================================= +// SECTION 10: Stress Tests +// ============================================================================= + +// Test 10.1: Many closures sharing same environment +function manyClosuresSameEnv(): i32 { + let value: i32 = 0; + + let inc1 = (): void => { value += 1; }; + let inc2 = (): void => { value += 2; }; + let inc3 = (): void => { value += 3; }; + let inc4 = (): void => { value += 4; }; + let inc5 = (): void => { value += 5; }; + let get = (): i32 => value; + + inc1(); inc2(); inc3(); inc4(); inc5(); + + return get(); // 1 + 2 + 3 + 4 + 5 = 15 +} +assert(manyClosuresSameEnv() == 15); + +// Test 10.2: Large number of captures +function manyCaptures(): i32 { + let a: i32 = 1, b: i32 = 2, c: i32 = 3, d: i32 = 4; + let e: i32 = 5, f: i32 = 6, g: i32 = 7, h: i32 = 8; + let i: i32 = 9, j: i32 = 10, k: i32 = 11, l: i32 = 12; + + let fn = (): i32 => a + b + c + d + e + f + g + h + i + j + k + l; + + return fn(); // 78 +} +assert(manyCaptures() == 78); + +// Test 10.3: Simple IIFE (Immediately Invoked Function Expression) +function simpleIIFE(): i32 { + let v1: i32 = 1; + let result = ((): i32 => { + return v1 + 9; + })(); + return result; +} +assert(simpleIIFE() == 10); + +// Test 10.4: Closure array manipulation +// Note: Loop closures need a helper function to capture by value because +// AssemblyScript closures share their environment (reference semantics). +function captureLoopValue(val: i32): () => i32 { + return (): i32 => val; +} + +function closureArrayOps(): i32 { + let closures = new Array<() => i32>(10); + + for (let i: i32 = 0; i < 10; i++) { + let captured = i * 10; + // Use helper function to capture the current value of 'captured' + closures[i] = captureLoopValue(captured); + } + + let sum: i32 = 0; + for (let i: i32 = 0; i < 10; i++) { + sum += closures[i](); + } + + return sum; // 0 + 10 + 20 + ... + 90 = 450 +} +assert(closureArrayOps() == 450); + +// Test 10.5: Interleaved closure creation and execution +function interleavedClosures(): i32 { + let total: i32 = 0; + let get = (): i32 => total; + + let add1 = (): void => { total += 1; }; + add1(); + + let add10 = (): void => { total += 10; }; + add1(); + add10(); + + let add100 = (): void => { total += 100; }; + add1(); + add10(); + add100(); + + return get(); // 1 + 1 + 10 + 1 + 10 + 100 = 123 +} +assert(interleavedClosures() == 123); + +// ============================================================================= +// SECTION 11: Closure with String captures +// ============================================================================= + +// Test 11.1: Capture string +function captureString(): string { + let s: string = "Hello"; + let fn = (): string => s; + return fn(); +} +assert(captureString() == "Hello"); + +// Test 11.2: Mutate captured string reference +function mutateStringRef(): string { + let s: string = "A"; + let append = (suffix: string): void => { s = s + suffix; }; + let get = (): string => s; + + append("B"); + append("C"); + append("D"); + + return get(); +} +assert(mutateStringRef() == "ABCD"); + +// ============================================================================= +// Final assertion to confirm all tests passed +// ============================================================================= +assert(true); // If we reach here, all tests passed! diff --git a/tests/compiler/closure.debug.wat b/tests/compiler/closure.debug.wat index 17e795c49d..0c6560c2d2 100644 --- a/tests/compiler/closure.debug.wat +++ b/tests/compiler/closure.debug.wat @@ -57,7 +57,10 @@ (export "memory" (memory $0)) (start $~start) (func $closure/testCaptureParam~anonymous|0 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) @@ -2283,7 +2286,10 @@ return ) (func $closure/testCaptureVar~anonymous|0 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load ) (func $closure/testCaptureVar (result i32) @@ -2310,7 +2316,10 @@ return ) (func $closure/testCaptureLet~anonymous|0 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load ) (func $closure/testCaptureLet (result i32) @@ -2337,24 +2346,33 @@ return ) (func $closure/testClosureWrite~anonymous|0 + (local $$closureEnv i32) global.get $$~lib/__closure_env - global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv i32.load i32.const 1 i32.add i32.store ) (func $closure/testClosureWrite~anonymous|1 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load ) (func $closure/testMultipleCaptures~anonymous|0 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load - global.get $$~lib/__closure_env + local.get $$closureEnv i32.load offset=4 i32.add - global.get $$~lib/__closure_env + local.get $$closureEnv i32.load offset=8 i32.add ) @@ -2388,12 +2406,18 @@ return ) (func $closure/testSharedEnvironment~anonymous|0 (param $x i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv local.get $x i32.store ) (func $closure/testSharedEnvironment~anonymous|1 (result i32) + (local $$closureEnv i32) global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv i32.load ) (func $start:closure diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat index dc9648296d..d4e33ae1dc 100644 --- a/tests/compiler/closure.release.wat +++ b/tests/compiler/closure.release.wat @@ -1540,19 +1540,23 @@ local.get $0 ) (func $closure/testClosureWrite~anonymous|0 + (local $0 i32) global.get $$~lib/__closure_env - global.get $$~lib/__closure_env + local.tee $0 + local.get $0 i32.load i32.const 1 i32.add i32.store ) (func $closure/testMultipleCaptures~anonymous|0 (result i32) + (local $0 i32) global.get $$~lib/__closure_env + local.tee $0 i32.load offset=8 - global.get $$~lib/__closure_env + local.get $0 i32.load - global.get $$~lib/__closure_env + local.get $0 i32.load offset=4 i32.add i32.add diff --git a/tests/compiler/function-call.debug.wat b/tests/compiler/function-call.debug.wat index 85c7ac0268..4cdf68e58c 100644 --- a/tests/compiler/function-call.debug.wat +++ b/tests/compiler/function-call.debug.wat @@ -12,6 +12,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-call/fnVoid (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-call/faVoid (mut i32) (i32.const 64)) (global $function-call/fnRet (mut i32) (i32.const 96)) (global $function-call/faRet (mut i32) (i32.const 192)) @@ -2492,29 +2493,59 @@ ) (func $start:function-call (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) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-call/fnVoid + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $2) + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-call/faVoid + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $2) i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-call/fnRet + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $4) i32.const 3 @@ -2530,9 +2561,16 @@ end i32.const 2 i32.const 3 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-call/faRet + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $4) i32.const 5 @@ -2547,9 +2585,16 @@ unreachable end i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-call/fnThis + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 1 @@ -2584,20 +2629,34 @@ call $function-call/Foo#constructor global.set $function-call/foo global.get $function-call/foo - local.set $0 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=20 + local.get $8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 i32.const 0 global.set $~argumentsLength i32.const 656 + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $3) i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength i32.const 688 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 1 @@ -2612,16 +2671,23 @@ unreachable end global.get $function-call/foo - local.set $0 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $8 + i32.store offset=20 + local.get $8 i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength i32.const 720 + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $6) i32.const 3 @@ -2636,7 +2702,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index ab9646583b..6f45ae785f 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -155,7 +155,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$115 + block $__inlined_func$~lib/rt/itcms/Object#unlink$114 local.get $1 i32.load offset=4 i32.const -4 @@ -179,7 +179,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$115 + br $__inlined_func$~lib/rt/itcms/Object#unlink$114 end local.get $1 i32.load offset=8 @@ -1469,10 +1469,13 @@ global.set $~lib/memory/__stack_pointer ) (func $~start + call $start:function-call + ) + (func $start:function-call (local $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1482,13 +1485,32 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.store + i32.const 1060 + i32.load + drop i32.const 1056 i32.load call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 1088 + i32.store offset=4 + i32.const 1092 + i32.load + drop i32.const 1088 i32.load call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 1120 + i32.store offset=8 + i32.const 1124 + i32.load + drop i32.const 1 i32.const 2 i32.const 1120 @@ -1504,6 +1526,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1216 + i32.store offset=12 + i32.const 1220 + i32.load + drop i32.const 2 i32.const 3 i32.const 1216 @@ -1519,6 +1547,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1248 + i32.store offset=16 + i32.const 1252 + i32.load + drop i32.const 1 i32.const 1248 i32.load @@ -1611,11 +1645,23 @@ global.get $~lib/memory/__stack_pointer global.get $function-call/foo local.tee $0 - i32.store + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 1680 + i32.store offset=24 + i32.const 1684 + i32.load + drop local.get $0 i32.const 1680 i32.load call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 1712 + i32.store offset=28 + i32.const 1716 + i32.load + drop i32.const 1 i32.const 1712 i32.load @@ -1624,7 +1670,13 @@ global.get $~lib/memory/__stack_pointer global.get $function-call/foo local.tee $0 - i32.store + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 1744 + i32.store offset=32 + i32.const 1748 + i32.load + drop local.get $0 i32.const 1 i32.const 2 @@ -1642,7 +1694,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/function-types.debug.wat b/tests/compiler/function-types.debug.wat index 06b04a6227..168e1e2876 100644 --- a/tests/compiler/function-types.debug.wat +++ b/tests/compiler/function-types.debug.wat @@ -1,14 +1,15 @@ (module (type $0 (func (param i32 i32) (result i32))) (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32) (result i32))) - (type $3 (func)) + (type $2 (func)) + (type $3 (func (param i32 i32 i32) (result i32))) (type $4 (func (param i64 i64) (result i64))) (type $5 (func (param f64 f64) (result f64))) (type $6 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 204)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32972)) @@ -53,42 +54,12 @@ i32.const 160 return ) - (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $fn - i32.load - call_indirect (type $0) - return - ) - (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - call $function-types/makeAdder - i32.load - call_indirect (type $0) - return - ) (func $function-types/addI32 (param $a i32) (param $b i32) (result i32) local.get $a local.get $b i32.add return ) - (func $function-types/makeAndAdd (param $a i32) (param $b i32) (param $adder i32) (result i32) - local.get $a - local.get $b - i32.const 2 - global.set $~argumentsLength - local.get $adder - i32.load - call_indirect (type $0) - return - ) (func $~start call $start:function-types ) @@ -148,21 +119,34 @@ ) (func $start:function-types (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 call $function-types/makeAdder global.set $function-types/i32Adder i32.const 1 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-types/i32Adder + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $0) i32.const 3 @@ -180,9 +164,16 @@ global.set $function-types/i64Adder i64.const 10 i64.const 20 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-types/i64Adder + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $4) i64.const 30 @@ -198,9 +189,16 @@ end f64.const 1.5 f64.const 2.5 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-types/makeAdder + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $5) f64.const 4 @@ -217,11 +215,11 @@ i32.const 2 i32.const 3 global.get $function-types/i32Adder - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 call $function-types/doAddWithFn i32.const 5 i32.eq @@ -251,11 +249,11 @@ i32.const 4 i32.const 5 i32.const 192 - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 call $function-types/doAddWithFn i32.const 9 i32.eq @@ -288,11 +286,11 @@ i32.const 1 i32.const 2 call $function-types/makeAdder - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $3 + i32.store offset=12 + local.get $3 call $function-types/makeAndAdd i32.const 3 i32.eq @@ -306,8 +304,107 @@ unreachable end global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.get $b + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $fn + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $4 + global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.get $b + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + call $function-types/makeAdder + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $function-types/makeAndAdd (param $a i32) (param $b i32) (param $adder i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.get $b + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $adder + local.tee $3 + i32.store + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return ) ) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat index 726e8230ce..345603d7ce 100644 --- a/tests/compiler/function-types.release.wat +++ b/tests/compiler/function-types.release.wat @@ -4,6 +4,7 @@ (type $2 (func (param f64 f64) (result f64))) (type $3 (func (param i32 i32 i32 i32))) (type $4 (func)) + (type $5 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33996)) @@ -36,7 +37,7 @@ (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -45,10 +46,19 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 i32.const 1056 global.set $function-types/i32Adder + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1060 + i32.load + drop i32.const 1 i32.const 2 i32.const 1056 @@ -64,6 +74,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1152 + i32.store offset=4 + i32.const 1156 + i32.load + drop i64.const 10 i64.const 20 i32.const 1152 @@ -79,6 +95,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1184 + i32.store offset=8 + i32.const 1188 + i32.load + drop f64.const 1.5 f64.const 2.5 i32.const 1184 @@ -97,12 +119,11 @@ global.get $~lib/memory/__stack_pointer global.get $function-types/i32Adder local.tee $0 - i32.store + i32.store offset=12 i32.const 2 i32.const 3 local.get $0 - i32.load - call_indirect (type $0) + call $function-types/doAddWithFn i32.const 5 i32.ne if @@ -113,11 +134,32 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1060 + i32.load + drop i32.const 3 i32.const 4 i32.const 1056 i32.load call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 7 i32.ne if @@ -130,12 +172,11 @@ end global.get $~lib/memory/__stack_pointer i32.const 1216 - i32.store + i32.store offset=12 i32.const 4 i32.const 5 i32.const 1216 - i32.load - call_indirect (type $0) + call $function-types/doAddWithFn i32.const 9 i32.ne if @@ -166,8 +207,7 @@ i32.const 1 i32.const 2 i32.const 1056 - i32.load - call_indirect (type $0) + call $function-types/doAddWithFn global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -184,12 +224,11 @@ end global.get $~lib/memory/__stack_pointer i32.const 1056 - i32.store + i32.store offset=12 i32.const 1 i32.const 2 i32.const 1056 - i32.load - call_indirect (type $0) + call $function-types/doAddWithFn i32.const 3 i32.ne if @@ -201,7 +240,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -213,4 +252,39 @@ call $~lib/builtins/abort unreachable ) + (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 1228 + i32.lt_s + if + i32.const 34016 + i32.const 34064 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop + local.get $0 + local.get $1 + local.get $2 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/getter-call.debug.wat b/tests/compiler/getter-call.debug.wat index 7ac0d77688..a0eac13ecd 100644 --- a/tests/compiler/getter-call.debug.wat +++ b/tests/compiler/getter-call.debug.wat @@ -24,6 +24,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 448)) (global $~lib/memory/__data_end i32 (i32.const 476)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33244)) @@ -2391,8 +2392,9 @@ (func $getter-call/test (result i32) (local $c i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -2401,26 +2403,36 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 call $getter-call/C#constructor local.tee $c i32.store + global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $c - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 call $getter-call/C#get:x + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $4) - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 return ) (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 907d6feeec..10bc074201 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -1471,7 +1471,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1483,6 +1483,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1538,12 +1541,18 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1456 + i32.store offset=8 + i32.const 1460 + i32.load + drop i32.const 1456 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 42 diff --git a/tests/compiler/infer-generic.debug.wat b/tests/compiler/infer-generic.debug.wat index e5325dead1..0a54635425 100644 --- a/tests/compiler/infer-generic.debug.wat +++ b/tests/compiler/infer-generic.debug.wat @@ -18,6 +18,7 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -2492,24 +2493,28 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -2517,11 +2522,11 @@ local.get $len local.tee $6 local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -2532,11 +2537,11 @@ if local.get $acc local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -2545,14 +2550,21 @@ f32.load local.get $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $5) local.set $acc @@ -2564,12 +2576,12 @@ end end local.get $acc - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $infer-generic/Ref#constructor (param $this i32) (result i32) diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index c09c4b901d..b6e75efdf5 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1638,8 +1638,8 @@ ) (func $~start (local $0 i32) - (local $1 i32) - (local $2 f32) + (local $1 f32) + (local $2 i32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer @@ -1664,7 +1664,7 @@ i32.const 1200 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1675,57 +1675,66 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store i32.const 1164 i32.load - local.set $3 + local.set $4 loop $for-loop|0 global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store - local.get $1 - local.get $3 + local.get $0 + local.get $4 i32.const 1164 i32.load - local.tee $4 + local.tee $3 local.get $3 local.get $4 - i32.lt_s + i32.gt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 1152 - i32.store offset=4 + i32.store offset=8 i32.const 1156 i32.load - local.get $1 + local.get $0 i32.const 2 i32.shl i32.add f32.load - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=4 + i32.const 1204 + i32.load + drop local.get $2 local.get $1 + local.get $0 i32.const 1152 i32.const 1200 i32.load call_indirect (type $2) - local.set $0 - local.get $1 + local.set $2 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer memory.size diff --git a/tests/compiler/inlining.debug.wat b/tests/compiler/inlining.debug.wat index 1478d40aca..14fc8dbf97 100644 --- a/tests/compiler/inlining.debug.wat +++ b/tests/compiler/inlining.debug.wat @@ -13,6 +13,7 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $inlining/constantGlobal i32 (i32.const 1)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -80,20 +81,24 @@ (local $c|17 i32) (local $d|18 i32) (local $a|19 i32) - (local $a|20 i32) - (local $b|21 i32) + (local $20 i32) + (local $a|21 i32) + (local $b|22 i32) (local $foo i32) (local $this i32) - (local $a|24 i32) - (local $b|25 i32) + (local $a|25 i32) + (local $b|26 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 f32.const -1 local.set $a f64.const -2 @@ -244,12 +249,19 @@ i32.const 0 local.set $a|19 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength block $inlining/func_fe|inlined.0 (result i32) i32.const 80 br $inlining/func_fe|inlined.0 end + local.tee $20 + i32.store + local.get $20 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $20 i32.load call_indirect (type $0) i32.const 2 @@ -265,11 +277,11 @@ end block $inlining/Foo.method_static|inlined.0 (result i32) i32.const 42 - local.set $a|20 + local.set $a|21 i32.const 2 - local.set $b|21 - local.get $a|20 - local.get $b|21 + local.set $b|22 + local.get $a|21 + local.get $b|22 i32.add br $inlining/Foo.method_static|inlined.0 end @@ -279,16 +291,16 @@ global.get $~lib/memory/__stack_pointer i32.const 123 local.tee $foo - i32.store + i32.store offset=4 block $inlining/Foo#method_this|inlined.0 (result i32) global.get $~lib/memory/__stack_pointer local.get $foo local.tee $this - i32.store offset=4 + i32.store offset=8 i32.const 43 - local.set $a|24 + local.set $a|25 i32.const 3 - local.set $b|25 + local.set $b|26 local.get $this br $inlining/Foo#method_this|inlined.0 end @@ -304,7 +316,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index bb306de122..d676cff9a4 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1544,7 +1544,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1555,6 +1555,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1104 + i32.store + i32.const 1108 + i32.load + drop i32.const 2 i32.const 1104 i32.load @@ -1562,12 +1571,12 @@ drop global.get $~lib/memory/__stack_pointer i32.const 123 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 123 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer memory.size diff --git a/tests/compiler/issues/2707.debug.wat b/tests/compiler/issues/2707.debug.wat index bf7710636a..21f9bb4007 100644 --- a/tests/compiler/issues/2707.debug.wat +++ b/tests/compiler/issues/2707.debug.wat @@ -27,6 +27,7 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 496)) (global $~lib/memory/__data_end i32 (i32.const 524)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) @@ -2436,14 +2437,15 @@ (func $start:issues/2707 (local $0 i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store memory.size i32.const 16 i32.shl @@ -2466,19 +2468,26 @@ i32.const 4 i32.const 64 call $~lib/rt/__newArray - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 + local.get $2 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $issues/2707/func + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index bdafcad22f..d396e6d6ed 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1467,7 +1467,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1476,8 +1476,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store memory.size i32.const 16 i32.shl @@ -1601,13 +1601,19 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store offset=4 + i32.const 1060 + i32.load + drop local.get $2 i32.const 1056 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/resolve-function-expression.debug.wat b/tests/compiler/resolve-function-expression.debug.wat index 41b9a28c81..67f8d04f0a 100644 --- a/tests/compiler/resolve-function-expression.debug.wat +++ b/tests/compiler/resolve-function-expression.debug.wat @@ -14,6 +14,7 @@ (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -2991,18 +2992,31 @@ ) (func $start:resolve-function-expression (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 i32.const 2 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 32 + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $0) i32.const 42 @@ -3017,9 +3031,16 @@ unreachable end i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 144 + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) i32.const 42 @@ -3051,18 +3072,25 @@ call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 176 + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) i32.const 10 call $~lib/number/I32#toString - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 + local.get $3 + i32.store offset=8 + local.get $3 i32.const 2384 call $~lib/string/String.__eq i32.eqz @@ -3075,7 +3103,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index ad27a4cfac..f7c37d25ff 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -1842,7 +1842,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -1851,8 +1851,17 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 1056 i32.store + i32.const 1060 + i32.load + drop i32.const 2 i32.const 1056 i32.load @@ -1867,6 +1876,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 1168 + i32.store offset=4 + i32.const 1172 + i32.load + drop i32.const 1 i32.const 1168 i32.load @@ -1913,6 +1928,12 @@ i32.store i32.const 1744 global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 1200 + i32.store offset=12 + i32.const 1204 + i32.load + drop i32.const 0 i32.const 1200 i32.load @@ -1921,7 +1942,7 @@ local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 - i32.store + i32.store offset=8 block $__inlined_func$~lib/string/String.__eq$1 (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -2071,7 +2092,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat index 20c870d9c4..5ab19a9dd4 100644 --- a/tests/compiler/resolve-ternary.debug.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -43,6 +43,7 @@ (global $resolve-ternary/f1 i32 (i32.const 3472)) (global $resolve-ternary/f2 i32 (i32.const 3504)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 3584)) (global $~lib/memory/__data_end i32 (i32.const 3608)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36376)) @@ -4396,14 +4397,20 @@ ) (func $start:resolve-ternary (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 memory.size i32.const 16 i32.shl @@ -4429,11 +4436,11 @@ end i32.const 10 call $~lib/number/I32#toString - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 + local.get $3 i32.const 2208 call $~lib/string/String.__eq i32.eqz @@ -4453,11 +4460,11 @@ end i32.const 0 call $~lib/number/F64#toString - local.set $0 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store - local.get $0 + local.get $3 i32.const 3440 call $~lib/string/String.__eq i32.eqz @@ -4470,6 +4477,7 @@ unreachable end i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4478,6 +4486,12 @@ else global.get $resolve-ternary/f2 end + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 i32.load call_indirect (type $0) i32.const 2 @@ -4492,6 +4506,7 @@ unreachable end i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4500,6 +4515,12 @@ else i32.const 3568 end + local.tee $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) i32.const 4 @@ -4514,6 +4535,7 @@ unreachable end i32.const 1 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4522,6 +4544,12 @@ else i32.const 3568 end + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 i32.load call_indirect (type $0) i32.const 3 @@ -4536,7 +4564,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 8fa84ef7ad..9bf96ae013 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -2492,7 +2492,7 @@ (local $5 i64) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -2501,8 +2501,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 memory.size i32.const 16 i32.shl @@ -2719,6 +2722,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4496 + i32.store offset=4 + i32.const 4500 + i32.load + drop i32.const 1 i32.const 4496 i32.load @@ -2733,6 +2742,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4560 + i32.store offset=8 + i32.const 4564 + i32.load + drop i32.const 1 i32.const 4560 i32.load @@ -2747,6 +2762,12 @@ call $~lib/builtins/abort unreachable end + global.get $~lib/memory/__stack_pointer + i32.const 4528 + i32.store offset=12 + i32.const 4532 + i32.load + drop i32.const 1 i32.const 4528 i32.load @@ -2762,7 +2783,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/std/array-access.debug.wat b/tests/compiler/std/array-access.debug.wat index 951850584d..5088a5fd0f 100644 --- a/tests/compiler/std/array-access.debug.wat +++ b/tests/compiler/std/array-access.debug.wat @@ -11,6 +11,7 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33052)) (global $~lib/memory/__heap_base i32 (i32.const 33052)) @@ -794,33 +795,41 @@ ) (func $std/array-access/functionArrayElementCall (param $a i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 123 + global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength local.get $a - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store - local.get $1 + local.get $2 i32.const 0 call $~lib/array/Array<%28i32%29=>i32>#__get + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 i32.load call_indirect (type $0) - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 return ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat index d9ec8e7386..e6abce78bf 100644 --- a/tests/compiler/std/array-access.release.wat +++ b/tests/compiler/std/array-access.release.wat @@ -562,7 +562,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -570,15 +570,22 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - i32.const 123 + global.get $~lib/memory/__stack_pointer local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get + local.tee $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + drop + i32.const 123 + local.get $0 i32.load call_indirect (type $0) unreachable diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat index 76974815e0..cf43109fb2 100644 --- a/tests/compiler/std/array.debug.wat +++ b/tests/compiler/std/array.debug.wat @@ -56,6 +56,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) @@ -4326,7 +4327,21 @@ (local $b f32) (local $min f32) (local $max f32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -4379,9 +4394,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $7) i32.const 0 @@ -4411,9 +4433,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $7) i32.const 0 @@ -4459,9 +4488,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $7) i32.const 0 @@ -4499,161 +4535,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp f32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - f32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - f32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -4713,6 +4598,15 @@ (local $k i32) (local $a f32) (local $b f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -4804,9 +4698,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $7) i32.const 0 @@ -4843,6 +4744,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) (local $ia i32) @@ -4885,7 +4790,21 @@ (local $b f64) (local $min f64) (local $max f64) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -4938,9 +4857,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -4970,9 +4896,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -5018,9 +4951,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -5058,161 +4998,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp f64) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - f64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - f64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -5221,6 +5010,15 @@ (local $k i32) (local $a f64) (local $b f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -5312,9 +5110,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -5351,6 +5156,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) (local $ia i64) @@ -5393,7 +5202,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -5446,9 +5269,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -5478,9 +5308,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -5526,9 +5363,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -5566,161 +5410,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -5729,6 +5422,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -5820,9 +5522,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -5859,6 +5568,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -5872,7 +5585,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -5925,9 +5652,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -5957,9 +5691,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -6005,9 +5746,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -6045,161 +5793,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -6208,6 +5805,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -6299,9 +5905,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -6338,6 +5951,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -14278,22 +13895,26 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14301,11 +13922,11 @@ local.get $len local.tee $4 local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14315,11 +13936,11 @@ i32.lt_s if local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14328,24 +13949,31 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $3) if local.get $i - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return end local.get $i @@ -14356,12 +13984,12 @@ end end i32.const -1 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $start:std/array~anonymous|3 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14426,20 +14054,24 @@ (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -14450,11 +14082,11 @@ i32.ge_s if local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 + local.get $4 + i32.store offset=8 + local.get $4 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14463,24 +14095,31 @@ i32.load local.get $i local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $3) if local.get $i - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return end local.get $i @@ -14491,12 +14130,12 @@ end end i32.const -1 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) (func $start:std/array~anonymous|9 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14534,22 +14173,26 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14557,11 +14200,11 @@ local.get $len local.tee $4 local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14571,11 +14214,11 @@ i32.lt_s if local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14584,25 +14227,32 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $3) i32.eqz if i32.const 0 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return end local.get $i @@ -14613,12 +14263,12 @@ end end i32.const 1 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $start:std/array~anonymous|12 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14686,22 +14336,26 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14709,11 +14363,11 @@ local.get $len local.tee $4 local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14723,11 +14377,11 @@ i32.lt_s if local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14736,24 +14390,31 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $3) if i32.const 1 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return end local.get $i @@ -14764,12 +14425,12 @@ end end i32.const 0 - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $start:std/array~anonymous|17 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14837,22 +14498,26 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14860,11 +14525,11 @@ local.get $len local.tee $4 local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14874,11 +14539,11 @@ i32.lt_s if local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=4 - local.get $6 + local.get $7 + i32.store offset=8 + local.get $7 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14887,14 +14552,21 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $5) local.get $i @@ -14905,7 +14577,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -15106,25 +14778,24 @@ (local $i i32) (local $6 i32) (local $7 i32) + (local $8 i32) (local $result i32) - (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -15136,11 +14807,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array<~lib/string/String>#get:dataStart local.set $outStart i32.const 0 @@ -15150,11 +14821,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15165,11 +14836,11 @@ if global.get $~lib/memory/__stack_pointer local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $10 + i32.store offset=12 + local.get $10 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15178,18 +14849,25 @@ i32.load local.get $i local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $3) local.tee $result - i32.store offset=12 + i32.store offset=16 local.get $outStart local.get $i i32.const 2 @@ -15211,12 +14889,12 @@ end end local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) @@ -15226,10 +14904,11 @@ (local $i i32) (local $6 i32) (local $7 i32) + (local $8 i32) (local $result f32) - (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -15237,14 +14916,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -15256,11 +14935,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -15270,11 +14949,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15284,11 +14963,11 @@ i32.lt_s if local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $10 + i32.store offset=12 + local.get $10 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15297,14 +14976,21 @@ i32.load local.get $i local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $18) local.set $result @@ -15325,12 +15011,12 @@ end end local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $start:std/array~anonymous|27 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15372,10 +15058,11 @@ (local $i i32) (local $6 i32) (local $7 i32) + (local $8 i32) (local $result i32) - (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -15383,14 +15070,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -15402,11 +15089,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -15416,11 +15103,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15430,11 +15117,11 @@ i32.lt_s if local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $10 + i32.store offset=12 + local.get $10 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15443,14 +15130,21 @@ i32.load local.get $i local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $3) local.set $result @@ -15471,12 +15165,12 @@ end end local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $start:std/array~anonymous|29 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15518,8 +15212,9 @@ (local $6 i32) (local $value i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -15528,6 +15223,9 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 i32.const 4 i32.const 0 @@ -15537,11 +15235,11 @@ i32.const 0 local.set $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=4 - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15549,11 +15247,11 @@ local.get $len local.tee $5 local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=4 - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.tee $6 local.get $5 @@ -15563,11 +15261,11 @@ i32.lt_s if local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=4 - local.get $8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15578,23 +15276,30 @@ local.get $value local.get $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=4 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=8 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $3) if local.get $result - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=4 - local.get $8 + local.get $9 local.get $value call $~lib/array/Array#push drop @@ -15607,12 +15312,12 @@ end end local.get $result - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $start:std/array~anonymous|31 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15689,24 +15394,28 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15714,11 +15423,11 @@ local.get $len local.tee $6 local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15729,11 +15438,11 @@ if local.get $acc local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15742,14 +15451,21 @@ i32.load local.get $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $4) local.set $acc @@ -15761,12 +15477,12 @@ end end local.get $acc - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) @@ -15776,24 +15492,28 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15801,11 +15521,11 @@ local.get $len local.tee $6 local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15816,11 +15536,11 @@ if local.get $acc local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=4 - local.get $8 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15829,14 +15549,21 @@ i32.load local.get $i local.get $this - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $4) local.set $acc @@ -15848,12 +15575,12 @@ end end local.get $acc - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $start:std/array~anonymous|38 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) @@ -15919,22 +15646,26 @@ (local $acc i32) (local $i i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $initialValue local.set $acc local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -15946,11 +15677,11 @@ if local.get $acc local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 + local.get $6 + i32.store offset=8 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15959,14 +15690,21 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -15978,34 +15716,38 @@ end end local.get $acc - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return ) (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) (local $acc i32) (local $i i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $initialValue local.set $acc local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -16017,11 +15759,11 @@ if local.get $acc local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=4 - local.get $5 + local.get $6 + i32.store offset=8 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -16030,14 +15772,21 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -16049,12 +15798,12 @@ end end local.get $acc - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return ) (func $start:std/array~anonymous|45 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) @@ -16247,10 +15996,13 @@ (local $3 i32) (local $a f32) (local $b f32) + (local $6 i32) (local $c i32) - (local $a|7 f32) - (local $b|8 f32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 f32) + (local $b|10 f32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -16261,29 +16013,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -16293,7 +16048,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16325,9 +16080,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $7) i32.const 0 @@ -16349,9 +16111,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $7) i32.const 0 @@ -16372,34 +16141,41 @@ end local.get $ptr f32.load - local.set $a|7 + local.set $a|9 local.get $ptr f32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $7) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select f32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select f32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16411,14 +16187,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16482,11 +16258,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -16498,13 +16274,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -16513,11 +16289,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16537,11 +16313,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -16555,15 +16331,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -16572,11 +16348,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16587,14 +16363,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -16607,7 +16383,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -16617,26 +16393,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -16664,27 +16440,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -16694,17 +16470,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -16713,7 +16489,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -16818,10 +16594,13 @@ (local $3 i32) (local $a f64) (local $b f64) + (local $6 i32) (local $c i32) - (local $a|7 f64) - (local $b|8 f64) - (local $c|9 i32) + (local $8 i32) + (local $a|9 f64) + (local $b|10 f64) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -16832,29 +16611,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -16864,7 +16646,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16896,9 +16678,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -16920,9 +16709,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -16943,34 +16739,41 @@ end local.get $ptr f64.load - local.set $a|7 + local.set $a|9 local.get $ptr f64.load offset=8 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select f64.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select f64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16982,14 +16785,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -17053,11 +16856,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -17069,13 +16872,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -17084,11 +16887,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -17108,11 +16911,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -17126,15 +16929,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -17143,11 +16946,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -17158,14 +16961,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -17178,7 +16981,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -17188,26 +16991,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -17235,27 +17038,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -17265,17 +17068,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -17284,7 +17087,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -17660,10 +17463,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -17674,29 +17480,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -17706,7 +17515,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -17738,9 +17547,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -17762,9 +17578,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -17785,34 +17608,41 @@ end local.get $ptr i32.load - local.set $a|7 + local.set $a|9 local.get $ptr i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -17824,14 +17654,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -17895,11 +17725,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -17911,13 +17741,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -17926,11 +17756,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -17950,11 +17780,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -17968,15 +17798,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -17985,11 +17815,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -18000,14 +17830,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -18020,7 +17850,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -18030,26 +17860,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -18077,27 +17907,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -18107,17 +17937,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -18126,7 +17956,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -18229,10 +18059,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -18243,29 +18076,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -18275,7 +18111,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -18307,9 +18143,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -18331,9 +18174,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -18354,34 +18204,41 @@ end local.get $ptr i32.load - local.set $a|7 + local.set $a|9 local.get $ptr i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -18393,14 +18250,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -18464,11 +18321,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -18480,13 +18337,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -18495,11 +18352,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -18519,11 +18376,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -18537,15 +18394,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -18554,11 +18411,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -18569,14 +18426,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -18589,7 +18446,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -18599,26 +18456,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -18646,27 +18503,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -18676,17 +18533,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -18695,7 +18552,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -18904,22 +18761,23 @@ (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 1 local.set $i local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/array/Array#get:length local.set $len loop $for-loop|0 @@ -18928,38 +18786,45 @@ i32.lt_s if local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $i i32.const 1 i32.sub call $~lib/array/Array#__get local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $i call $~lib/array/Array#__get + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -18970,12 +18835,12 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $std/array/assertSorted (param $arr i32) (param $comparator i32) @@ -19314,16 +19179,19 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) - (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill i32.const 0 i32.const 1 @@ -19384,20 +19252,27 @@ local.tee $max i32.store offset=12 local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $b - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -19432,20 +19307,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $max - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -19492,20 +19374,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $min - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -19544,37 +19433,38 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) - (local $7 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $i local.get $right i32.eq if local.get $i - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end local.get $i @@ -19585,11 +19475,11 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 1 @@ -19599,14 +19489,21 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -19623,25 +19520,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -19672,7 +19576,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=8 + i32.store offset=16 local.get $ptr local.get $i i32.const 2 @@ -19715,25 +19619,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -19751,12 +19662,12 @@ end end local.get $j - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -19767,17 +19678,16 @@ (local $a i32) (local $b i32) (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $m i32.const 1 i32.sub @@ -19872,20 +19782,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=8 - local.get $12 + local.get $13 local.get $b - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 - local.get $12 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store offset=16 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -19923,7 +19840,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19931,10 +19848,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -19945,29 +19865,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $len i32.const 48 @@ -19978,7 +19898,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -20013,20 +19933,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -20051,20 +19978,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -20086,47 +20020,54 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|7 - i32.store offset=16 + local.tee $a|9 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 + local.tee $b|10 + i32.store offset=28 + local.get $a|9 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 + local.get $37 + local.get $b|10 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=32 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -20138,14 +20079,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -20209,11 +20150,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -20225,13 +20166,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -20240,11 +20181,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -20264,11 +20205,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -20282,15 +20223,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -20299,11 +20240,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -20314,14 +20255,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -20334,7 +20275,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -20344,26 +20285,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -20391,27 +20332,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -20421,17 +20362,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -20440,7 +20381,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -21051,16 +20992,19 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) - (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill i32.const 0 i32.const 1 @@ -21121,20 +21065,27 @@ local.tee $max i32.store offset=12 local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $b - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -21169,20 +21120,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $max - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -21229,20 +21187,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $min - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -21281,37 +21246,38 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) - (local $7 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $i local.get $right i32.eq if local.get $i - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end local.get $i @@ -21322,11 +21288,11 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 1 @@ -21336,14 +21302,21 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -21360,25 +21333,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -21409,7 +21389,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=8 + i32.store offset=16 local.get $ptr local.get $i i32.const 2 @@ -21452,25 +21432,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -21488,12 +21475,12 @@ end end local.get $j - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return ) (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -21504,17 +21491,16 @@ (local $a i32) (local $b i32) (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $m i32.const 1 i32.sub @@ -21609,20 +21595,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=8 - local.get $12 + local.get $13 local.get $b - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 - local.get $12 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store offset=16 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -21660,7 +21653,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -21668,10 +21661,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -21682,29 +21678,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $len i32.const 48 @@ -21715,7 +21711,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -21750,20 +21746,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -21788,20 +21791,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -21823,47 +21833,54 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|7 - i32.store offset=16 + local.tee $a|9 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 + local.tee $b|10 + i32.store offset=28 + local.get $a|9 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 + local.get $37 + local.get $b|10 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=32 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -21875,14 +21892,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/array/Array> global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -21946,11 +21963,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $endA local.get $endA @@ -21962,13 +21979,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -21977,11 +21994,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 @@ -22001,11 +22018,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $endB local.get $endB @@ -22019,15 +22036,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -22036,11 +22053,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 @@ -22051,14 +22068,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -22071,7 +22088,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -22081,26 +22098,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -22128,27 +22145,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -22158,17 +22175,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -22177,7 +22194,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22317,8 +22334,9 @@ (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22326,16 +22344,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $i local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/array/Array<~lib/array/Array>#get:length local.set $len loop $for-loop|0 @@ -22344,48 +22362,55 @@ i32.lt_s if local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/array/Array>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i call $~lib/array/Array<~lib/array/Array>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -22396,12 +22421,12 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $std/array/assertSorted<~lib/array/Array> (param $arr i32) (param $comparator i32) @@ -22806,16 +22831,19 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) - (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill i32.const 0 i32.const 1 @@ -22876,20 +22904,27 @@ local.tee $max i32.store offset=12 local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $b - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -22924,20 +22959,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $max - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -22984,20 +23026,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $min - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -23036,37 +23085,38 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) - (local $7 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $i local.get $right i32.eq if local.get $i - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end local.get $i @@ -23077,11 +23127,11 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 1 @@ -23091,14 +23141,21 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -23115,25 +23172,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -23164,7 +23228,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=8 + i32.store offset=16 local.get $ptr local.get $i i32.const 2 @@ -23207,25 +23271,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -23243,12 +23314,12 @@ end end local.get $j - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return ) (func $~lib/util/sort/mergeRuns> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -23259,17 +23330,16 @@ (local $a i32) (local $b i32) (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $m i32.const 1 i32.sub @@ -23364,20 +23434,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=8 - local.get $12 + local.get $13 local.get $b - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 - local.get $12 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store offset=16 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -23415,7 +23492,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -23423,10 +23500,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -23437,29 +23517,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $len i32.const 48 @@ -23470,7 +23550,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -23505,20 +23585,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -23543,20 +23630,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -23578,47 +23672,54 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|7 - i32.store offset=16 + local.tee $a|9 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 + local.tee $b|10 + i32.store offset=28 + local.get $a|9 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 + local.get $37 + local.get $b|10 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=32 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -23630,14 +23731,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort> global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -23701,11 +23802,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight> local.set $endA local.get $endA @@ -23717,13 +23818,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -23732,11 +23833,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort> end i32.const 0 @@ -23756,11 +23857,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight> local.set $endB local.get $endB @@ -23774,15 +23875,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -23791,11 +23892,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort> end i32.const 0 @@ -23806,14 +23907,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -23826,7 +23927,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -23836,26 +23937,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -23883,27 +23984,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -23913,17 +24014,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns> end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -23932,7 +24033,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -24072,8 +24173,9 @@ (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -24081,16 +24183,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $i local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/array/Array>#get:length local.set $len loop $for-loop|0 @@ -24099,48 +24201,55 @@ i32.lt_s if local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i i32.const 1 i32.sub call $~lib/array/Array>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i call $~lib/array/Array>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -24151,12 +24260,12 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $std/array/assertSorted> (param $arr i32) (param $comparator i32) @@ -24218,16 +24327,19 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) - (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill i32.const 0 i32.const 1 @@ -24288,20 +24400,27 @@ local.tee $max i32.store offset=12 local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $b - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -24336,20 +24455,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $max - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -24396,20 +24522,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $min - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -24448,37 +24581,38 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) - (local $7 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $i local.get $right i32.eq if local.get $i - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end local.get $i @@ -24489,11 +24623,11 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 1 @@ -24503,14 +24637,21 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -24527,25 +24668,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -24576,7 +24724,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=8 + i32.store offset=16 local.get $ptr local.get $i i32.const 2 @@ -24619,25 +24767,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -24655,12 +24810,12 @@ end end local.get $j - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return ) (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -24671,17 +24826,16 @@ (local $a i32) (local $b i32) (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $m i32.const 1 i32.sub @@ -24776,20 +24930,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=8 - local.get $12 + local.get $13 local.get $b - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 - local.get $12 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store offset=16 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -24827,7 +24988,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -24835,10 +24996,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -24849,29 +25013,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $len i32.const 48 @@ -24882,7 +25046,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -24917,20 +25081,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -24955,20 +25126,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -24990,47 +25168,54 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|7 - i32.store offset=16 + local.tee $a|9 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 + local.tee $b|10 + i32.store offset=28 + local.get $a|9 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 + local.get $37 + local.get $b|10 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=32 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -25042,14 +25227,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String|null> global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -25113,11 +25298,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endA local.get $endA @@ -25129,13 +25314,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -25144,11 +25329,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 @@ -25168,11 +25353,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endB local.get $endB @@ -25186,15 +25371,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -25203,11 +25388,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 @@ -25218,14 +25403,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -25238,7 +25423,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -25248,26 +25433,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/string/String|null> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -25295,27 +25480,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -25325,17 +25510,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/string/String|null> end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -25344,7 +25529,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -25474,8 +25659,9 @@ (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -25483,16 +25669,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $i local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/array/Array<~lib/string/String|null>#get:length local.set $len loop $for-loop|0 @@ -25501,48 +25687,55 @@ i32.lt_s if local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i call $~lib/array/Array<~lib/string/String|null>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -25553,12 +25746,12 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $std/array/assertSorted<~lib/string/String|null> (param $arr i32) (param $comparator i32) @@ -26564,16 +26757,19 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) - (local $12 i32) + (local $13 i32) + (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill i32.const 0 i32.const 1 @@ -26634,20 +26830,27 @@ local.tee $max i32.store offset=12 local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $b - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=24 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -26682,20 +26885,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $max - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=28 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -26742,20 +26952,27 @@ local.tee $a i32.store local.get $a - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=16 - local.get $12 + local.get $15 local.get $min - local.set $12 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $15 i32.store offset=20 - local.get $12 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=32 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -26794,37 +27011,38 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) + (local $5 i32) + (local $6 i32) (local $k i32) (local $tmp i32) - (local $7 i32) + (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $i local.get $right i32.eq if local.get $i - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return end local.get $i @@ -26835,11 +27053,11 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 1 @@ -26849,14 +27067,21 @@ i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -26873,25 +27098,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -26922,7 +27154,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=8 + i32.store offset=16 local.get $ptr local.get $i i32.const 2 @@ -26965,25 +27197,32 @@ i32.shl i32.add i32.load offset=4 - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store - local.get $7 + local.get $10 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $10 i32.store offset=4 - local.get $7 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $9 + i32.store offset=20 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -27001,12 +27240,12 @@ end end local.get $j - local.set $7 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $10 return ) (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -27017,17 +27256,16 @@ (local $a i32) (local $b i32) (local $12 i32) + (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $m i32.const 1 i32.sub @@ -27122,20 +27360,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=8 - local.get $12 + local.get $13 local.get $b - local.set $12 + local.set $13 global.get $~lib/memory/__stack_pointer - local.get $12 + local.get $13 i32.store offset=12 - local.get $12 + local.get $13 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store offset=16 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -27173,7 +27418,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -27181,10 +27426,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -27195,29 +27443,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $len i32.const 48 @@ -27228,7 +27476,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -27263,20 +27511,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -27301,20 +27556,27 @@ local.tee $b i32.store offset=4 local.get $a - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 local.get $b - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=20 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -27336,47 +27598,54 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|7 - i32.store offset=16 + local.tee $a|9 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|8 - i32.store offset=20 - local.get $a|7 - local.set $34 + local.tee $b|10 + i32.store offset=28 + local.get $a|9 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 - local.get $b|8 - local.set $34 + local.get $37 + local.get $b|10 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=12 - local.get $34 + local.get $37 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=32 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -27388,14 +27657,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String> global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return @@ -27459,11 +27728,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $endA local.get $endA @@ -27475,13 +27744,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -27490,11 +27759,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 @@ -27514,11 +27783,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $endB local.get $endB @@ -27532,15 +27801,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -27549,11 +27818,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 @@ -27564,14 +27833,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -27584,7 +27853,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -27594,26 +27863,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/string/String> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -27641,27 +27910,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -27671,17 +27940,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 + local.get $37 i32.store offset=8 - local.get $34 + local.get $37 call $~lib/util/sort/mergeRuns<~lib/string/String> end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -27690,7 +27959,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -27830,8 +28099,9 @@ (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -27839,16 +28109,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $i local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/array/Array<~lib/string/String>#get:length local.set $len loop $for-loop|0 @@ -27857,48 +28127,55 @@ i32.lt_s if local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 local.get $data - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $5 + i32.store offset=12 + local.get $5 local.get $i call $~lib/array/Array<~lib/string/String>#__get - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store offset=4 - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -27909,12 +28186,12 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $std/array/assertSorted<~lib/string/String> (param $arr i32) (param $comparator i32) @@ -33435,23 +33712,24 @@ (local $i i32) (local $6 i32) (local $7 i32) + (local $8 i32) (local $result i32) - (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array<~lib/array/Array>#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -33463,11 +33741,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $outStart i32.const 0 @@ -33477,11 +33755,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 call $~lib/array/Array<~lib/array/Array>#get:length_ local.tee $7 local.get $6 @@ -33492,36 +33770,43 @@ if global.get $~lib/memory/__stack_pointer local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=12 - local.get $9 + local.get $10 + i32.store offset=16 + local.get $10 call $~lib/array/Array<~lib/array/Array>#get:dataStart local.get $i i32.const 2 i32.shl i32.add i32.load - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store - local.get $9 + local.get $10 local.get $i local.get $this - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $3) local.tee $result - i32.store offset=16 + i32.store offset=20 local.get $outStart local.get $i i32.const 2 @@ -33543,12 +33828,12 @@ end end local.get $out - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $start:std/array @@ -46233,6 +46518,818 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp f32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp f64) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) (local $out i32) (local $decimals i32) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 22943cdb01..1d9fef47ec 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -758,7 +758,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$731 + block $__inlined_func$~lib/rt/itcms/Object#unlink$743 local.get $0 i32.load offset=4 i32.const -4 @@ -782,7 +782,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$731 + br $__inlined_func$~lib/rt/itcms/Object#unlink$743 end local.get $0 i32.load offset=8 @@ -2460,6 +2460,27 @@ (local $7 i32) (local $8 f32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2479,26 +2500,32 @@ local.get $3 select i32.add - local.set $7 + local.set $3 loop $for-loop|0 local.get $2 - local.get $7 + local.get $3 i32.ge_s if local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $7 f32.load offset=4 local.tee $8 local.set $6 - local.get $3 + local.get $7 f32.load local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $5 local.get $8 local.get $4 @@ -2512,47 +2539,52 @@ local.get $8 local.set $5 end - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $7 loop $while-continue|1 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if local.get $9 local.get $8 f32.store offset=8 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add @@ -2560,257 +2592,143 @@ f32.store offset=8 loop $while-continue|2 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.le_s - br_if $while-break|2 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if local.get $9 local.get $5 f32.store offset=4 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|2 end end end local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add local.get $6 f32.store offset=4 - local.get $7 + local.get $3 i32.const 2 i32.add - local.set $7 + local.set $3 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 f32) - local.get $1 - local.get $2 - i32.eq + (local $8 f32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 + local.get $2 i32.const 1 + i32.sub + local.tee $2 i32.add - local.tee $4 - i32.const 2 - i32.shl + local.set $9 + local.get $2 + i32.const 1 i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $10 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 f32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - f32.load - f32.store - br $for-loop|0 + i32.add + local.get $0 + local.get $10 + i32.add + f32.load + f32.store + br $for-loop|0 end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $9 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add f32.load offset=4 f32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -2820,14 +2738,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add f32.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add @@ -2835,6 +2753,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -2850,10 +2774,10 @@ i32.add local.get $7 f32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -2862,10 +2786,10 @@ i32.add local.get $8 f32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -2874,6 +2798,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -2910,6 +2838,27 @@ (local $6 i32) (local $7 f64) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2929,26 +2878,32 @@ local.get $3 select i32.add - local.set $6 + local.set $3 loop $for-loop|0 local.get $2 - local.get $6 + local.get $3 i32.ge_s if local.get $0 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $6 f64.load offset=8 local.tee $7 local.set $5 - local.get $3 + local.get $6 f64.load local.set $4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + i32.const 10548 + i32.load + drop local.get $4 local.get $7 i32.const 10544 @@ -2962,47 +2917,52 @@ local.get $7 local.set $4 end - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $6 loop $while-continue|1 local.get $1 - local.get $3 + local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $4 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=4 + i32.const 10548 + i32.load + drop + local.get $7 + local.get $4 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if local.get $8 local.get $7 f64.store offset=16 - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $3 + local.set $6 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $6 i32.const 3 i32.shl i32.add @@ -3010,194 +2970,62 @@ f64.store offset=16 loop $while-continue|2 local.get $1 - local.get $3 + local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - local.get $4 - local.get $5 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $8 - local.get $4 - f64.store offset=8 - local.get $3 - i32.const 1 - i32.sub - local.set $3 - br $while-continue|2 - end - end - end - local.get $0 - local.get $3 - i32.const 3 - i32.shl + local.get $0 + local.get $6 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=8 + i32.const 10548 + i32.load + drop + local.get $4 + local.get $5 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if + local.get $8 + local.get $4 + f64.store offset=8 + local.get $6 + i32.const 1 + i32.sub + local.set $6 + br $while-continue|2 + end + end + end + local.get $0 + local.get $6 + i32.const 3 + i32.shl i32.add local.get $5 f64.store offset=8 - local.get $6 + local.get $3 i32.const 2 i32.add - local.set $6 + local.set $3 br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - local.set $4 - local.get $6 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $6 - local.get $4 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $3 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) @@ -3205,26 +3033,44 @@ (local $7 f64) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $5 - local.get $3 + local.tee $2 i32.add local.set $8 - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $5 loop $for-loop|0 local.get $1 - local.get $2 + local.get $5 i32.lt_s if - local.get $2 + local.get $5 i32.const 1 i32.sub - local.tee $2 + local.tee $5 i32.const 3 i32.shl local.tee $9 @@ -3239,28 +3085,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $5 - i32.gt_s + i32.lt_s if local.get $4 local.get $8 - local.get $5 + local.get $2 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $5 + local.get $2 i32.const 3 i32.shl i32.add f64.load offset=8 f64.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $for-loop|1 end end @@ -3270,14 +3116,14 @@ i32.le_s if local.get $4 - local.get $5 + local.get $2 i32.const 3 i32.shl i32.add f64.load local.set $6 local.get $4 - local.get $2 + local.get $5 i32.const 3 i32.shl i32.add @@ -3285,6 +3131,12 @@ local.set $7 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + i32.const 10548 + i32.load + drop local.get $6 local.get $7 i32.const 10544 @@ -3300,10 +3152,10 @@ i32.add local.get $6 f64.store - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 else local.get $0 local.get $1 @@ -3312,10 +3164,10 @@ i32.add local.get $7 f64.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 end local.get $1 i32.const 1 @@ -3324,6 +3176,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -3360,12 +3216,33 @@ (local $7 i32) (local $8 i32) (local $9 i32) - local.get $1 - local.get $3 - local.get $2 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.sub - i32.const 1 + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $3 + local.get $2 + local.get $1 + i32.sub + i32.const 1 i32.add local.tee $5 local.get $3 @@ -3390,17 +3267,23 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load offset=4 + local.set $3 + local.get $5 + i32.load local.tee $6 local.set $5 - local.get $3 - i32.load - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -3421,25 +3304,30 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store offset=8 @@ -3456,33 +3344,38 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -3498,7 +3391,7 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=4 local.get $7 i32.const 2 @@ -3507,207 +3400,89 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - local.get $1 - local.get $2 - i32.eq + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s if - local.get $1 - return + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 + local.get $2 i32.const 1 + i32.sub + local.tee $2 i32.add - local.tee $4 - i32.const 2 - i32.shl + local.set $7 + local.get $2 + i32.const 1 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $8 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 + end + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $4 + local.get $7 local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -3717,14 +3492,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add @@ -3732,6 +3507,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -3747,10 +3528,10 @@ i32.add local.get $7 i32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -3759,10 +3540,10 @@ i32.add local.get $8 i32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -3771,6 +3552,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3783,6 +3568,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -3813,17 +3619,23 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 + local.set $3 + local.get $4 + i32.load local.tee $5 local.set $4 - local.get $3 - i32.load - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + i32.const 10852 + i32.load + drop local.get $5 + local.get $3 i32.const 10848 i32.load call_indirect (type $0) @@ -3844,25 +3656,30 @@ local.get $5 i32.le_s if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=4 + i32.const 10852 + i32.load + drop + local.get $7 + local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $7 i32.store offset=8 @@ -3879,33 +3696,38 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $5 i32.le_s if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=8 + i32.const 10852 + i32.load + drop + local.get $7 + local.get $3 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $7 i32.store offset=4 local.get $5 @@ -3921,7 +3743,7 @@ i32.const 2 i32.shl i32.add - local.get $4 + local.get $3 i32.store offset=4 local.get $6 i32.const 2 @@ -3930,171 +3752,53 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $3 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $5 - local.get $3 + local.tee $2 i32.add local.set $6 - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $5 loop $for-loop|0 local.get $1 - local.get $2 + local.get $5 i32.lt_s if - local.get $2 + local.get $5 i32.const 1 i32.sub - local.tee $2 + local.tee $5 i32.const 2 i32.shl local.tee $7 @@ -4109,28 +3813,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $5 - i32.gt_s + i32.lt_s if local.get $4 local.get $6 - local.get $5 + local.get $2 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $for-loop|1 end end @@ -4140,14 +3844,14 @@ i32.le_s if local.get $4 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add i32.load local.set $6 local.get $4 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add @@ -4155,6 +3859,12 @@ local.set $7 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + i32.const 10852 + i32.load + drop local.get $6 local.get $7 i32.const 10848 @@ -4170,10 +3880,10 @@ i32.add local.get $6 i32.store - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 else local.get $0 local.get $1 @@ -4182,10 +3892,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 end local.get $1 i32.const 1 @@ -4194,6 +3904,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6896,7 +6610,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$139 + block $__inlined_func$~lib/util/bytes/FILL$147 local.get $1 i32.eqz local.get $1 @@ -6921,7 +6635,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$139 + br $__inlined_func$~lib/util/bytes/FILL$147 end loop $for-loop|0 local.get $0 @@ -7191,7 +6905,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$148 + block $__inlined_func$~lib/util/bytes/FILL$156 local.get $1 i32.reinterpret_f32 i32.eqz @@ -7213,7 +6927,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$148 + br $__inlined_func$~lib/util/bytes/FILL$156 end loop $for-loop|0 local.get $0 @@ -7593,7 +7307,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$653 + block $__inlined_func$~lib/rt/itcms/__renew$665 local.get $3 i32.const 20 i32.sub @@ -7611,7 +7325,7 @@ i32.store offset=16 local.get $3 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$653 + br $__inlined_func$~lib/rt/itcms/__renew$665 end local.get $1 local.get $4 @@ -9633,7 +9347,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9651,6 +9365,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9673,7 +9390,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $2 @@ -9686,6 +9403,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -9693,7 +9416,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -9707,7 +9430,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -9782,7 +9505,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9800,6 +9523,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9814,7 +9540,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $2 @@ -9827,6 +9553,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -9834,7 +9566,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -9848,7 +9580,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -9858,7 +9590,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9876,6 +9608,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9898,7 +9633,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $2 @@ -9911,6 +9646,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -9919,7 +9660,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -9933,7 +9674,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -10009,7 +9750,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10027,6 +9768,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10049,7 +9793,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $2 @@ -10062,6 +9806,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -10069,7 +9819,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -10083,7 +9833,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -10159,7 +9909,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10177,6 +9927,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10199,7 +9952,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $2 @@ -10212,6 +9965,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -10225,7 +9984,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10465,7 +10224,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10483,8 +10242,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -10521,7 +10280,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=12 local.get $2 i32.const 2 i32.shl @@ -10536,6 +10295,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + drop local.get $4 local.get $5 i32.add @@ -10554,7 +10319,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10599,7 +10364,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10618,6 +10383,9 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 i32.const 4 i32.const 0 @@ -10661,6 +10429,12 @@ i32.store offset=4 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + drop local.get $5 local.get $2 local.get $0 @@ -10683,7 +10457,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -10767,7 +10541,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10785,6 +10559,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10807,7 +10584,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $3 @@ -10821,6 +10598,12 @@ i32.store i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $5 local.get $3 @@ -10837,7 +10620,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -10912,7 +10695,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10930,6 +10713,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10944,7 +10730,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=4 + i32.store offset=8 local.get $0 i32.load offset=4 local.get $3 @@ -10958,6 +10744,12 @@ i32.store i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $4 local.get $3 @@ -10974,7 +10766,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -11075,7 +10867,7 @@ (local $17 f32) (local $18 f32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11090,8 +10882,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -11121,6 +10916,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -11139,6 +10940,12 @@ local.set $18 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $18 local.get $9 @@ -11171,6 +10978,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -11194,7 +11007,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11264,7 +11077,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11282,7 +11095,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -11307,7 +11120,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -11327,7 +11140,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $10 @@ -11396,7 +11209,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -11462,7 +11275,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -11483,13 +11296,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -11592,7 +11405,7 @@ (local $16 f64) (local $17 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11607,8 +11420,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -11638,6 +11454,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + i32.const 10548 + i32.load + drop local.get $0 local.get $17 local.get $16 @@ -11656,6 +11478,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=4 + i32.const 10548 + i32.load + drop local.get $16 local.get $17 local.get $1 @@ -11689,6 +11517,12 @@ local.set $16 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=8 + i32.const 10548 + i32.load + drop local.get $0 local.get $16 local.get $8 @@ -11712,7 +11546,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11781,7 +11615,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11798,7 +11632,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -11822,7 +11656,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 local.get $3 i32.const 1 @@ -11841,7 +11675,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 local.get $5 local.get $9 @@ -11909,7 +11743,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 local.get $7 local.get $2 @@ -11974,7 +11808,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store + i32.store offset=12 local.get $0 local.get $3 local.get $2 @@ -11994,13 +11828,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -12069,7 +11903,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12084,8 +11918,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -12115,6 +11952,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -12133,6 +11976,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -12165,6 +12014,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -12188,7 +12043,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -12258,7 +12113,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -12276,7 +12131,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -12301,7 +12156,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -12321,7 +12176,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -12390,7 +12245,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -12456,7 +12311,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -12477,13 +12332,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -12544,7 +12399,7 @@ (local $13 i32) (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12559,8 +12414,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -12590,6 +12448,12 @@ local.set $2 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + i32.const 10852 + i32.load + drop local.get $0 local.get $2 local.get $1 @@ -12608,6 +12472,12 @@ local.set $4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=4 + i32.const 10852 + i32.load + drop local.get $1 local.get $2 local.get $3 @@ -12641,6 +12511,12 @@ local.set $2 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=8 + i32.const 10852 + i32.load + drop local.get $0 local.get $2 local.get $1 @@ -12664,7 +12540,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -12733,7 +12609,7 @@ local.set $11 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -12750,7 +12626,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -12774,7 +12650,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -12793,7 +12669,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 local.get $5 local.get $8 @@ -12861,7 +12737,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 local.get $7 local.get $2 @@ -12926,7 +12802,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store + i32.store offset=12 local.get $0 local.get $3 local.get $2 @@ -12946,13 +12822,13 @@ local.get $9 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -13086,7 +12962,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted$658 (result i32) + block $__inlined_func$std/array/isSorted$670 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -13104,7 +12980,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13112,8 +12988,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 1 local.set $0 global.get $~lib/memory/__stack_pointer @@ -13143,6 +13019,12 @@ call $~lib/array/Array#__get i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $1 i32.load call_indirect (type $0) @@ -13150,11 +13032,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted$658 + br $__inlined_func$std/array/isSorted$670 end local.get $0 i32.const 1 @@ -13164,7 +13046,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -13266,7 +13148,7 @@ (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13282,7 +13164,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill local.get $1 local.get $3 @@ -13340,6 +13222,12 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=24 + local.get $4 + i32.load offset=4 + drop local.get $3 local.get $5 local.get $4 @@ -13385,6 +13273,12 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + drop local.get $7 local.get $3 local.get $4 @@ -13435,6 +13329,12 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + drop local.get $3 local.get $6 local.get $4 @@ -13469,7 +13369,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -13478,7 +13378,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13493,17 +13393,15 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.const 24 + memory.fill local.get $1 local.get $2 i32.eq if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -13532,6 +13430,12 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop local.get $5 local.get $6 local.get $3 @@ -13562,6 +13466,12 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + drop local.get $6 local.get $5 local.get $3 @@ -13596,7 +13506,7 @@ local.tee $3 i32.load local.tee $5 - i32.store offset=8 + i32.store offset=16 local.get $3 local.get $0 local.get $2 @@ -13643,6 +13553,12 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + drop local.get $5 local.get $1 local.get $3 @@ -13663,7 +13579,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -13673,7 +13589,7 @@ (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13688,11 +13604,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill local.get $3 local.get $2 i32.const 1 @@ -13783,6 +13697,12 @@ i32.store offset=12 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=16 + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -13823,7 +13743,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer ) @@ -13835,14 +13755,14 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) (local $11 i32) (local $12 i32) - (local $13 i32) + (local $13 i64) (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13858,7 +13778,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 36 memory.fill block $folding-inner0 local.get $1 @@ -13884,7 +13804,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $4 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -13892,32 +13812,38 @@ local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 - local.get $4 - local.get $4 + local.get $1 + local.get $1 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store global.get $~lib/memory/__stack_pointer - local.get $4 - local.get $3 local.get $1 + local.get $3 + local.get $4 select - local.tee $4 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -13925,68 +13851,80 @@ local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 - local.get $4 - local.get $4 + local.get $1 + local.get $1 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $4 select i32.store offset=4 local.get $0 - local.get $4 - local.get $3 local.get $1 + local.get $3 + local.get $4 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $4 - i32.store offset=16 + local.tee $1 + i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.tee $3 - i32.store offset=20 + i32.store offset=28 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=32 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 - local.get $4 - local.get $4 + local.get $1 + local.get $1 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $1 + local.tee $2 select i32.store local.get $0 - local.get $4 - local.get $3 local.get $1 + local.get $3 + local.get $2 select i32.store offset=4 br $folding-inner0 @@ -14008,43 +13946,43 @@ local.get $1 i32.clz i32.sub - local.tee $5 + local.tee $4 i32.const 2 i32.shl - local.tee $4 + local.tee $5 i32.const 1 i32.shl - local.set $3 + local.set $6 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end - local.get $4 + local.get $5 global.get $~lib/rt/tlsf/ROOT - local.get $3 + local.get $6 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $13 + local.tee $10 i32.add - local.set $12 + local.set $11 loop $for-loop|1 - local.get $5 - local.get $7 - i32.gt_u + local.get $3 + local.get $4 + i32.lt_u if - local.get $13 - local.get $7 + local.get $10 + local.get $3 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $7 + local.get $3 i32.const 1 i32.add - local.set $7 + local.set $3 br $for-loop|1 end end @@ -14060,7 +13998,7 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $11 + local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 @@ -14069,10 +14007,10 @@ local.get $1 i32.const 1 i32.sub - local.tee $14 + local.tee $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 + local.tee $4 i32.const 1 i32.add local.tee $1 @@ -14085,42 +14023,42 @@ local.get $0 i32.const 0 i32.const 31 - local.get $14 - local.get $14 + local.get $9 + local.get $9 i32.const 31 i32.ge_s select - local.tee $5 + local.tee $4 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.set $7 - i32.const 0 local.set $1 + i32.const 0 + local.set $3 loop $while-continue|2 - local.get $5 - local.get $14 + local.get $4 + local.get $9 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 - local.get $5 + local.get $4 i32.const 1 i32.add - local.tee $4 - local.get $14 + local.tee $6 + local.get $9 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $6 - local.get $4 + local.tee $5 + local.get $6 i32.sub i32.const 1 i32.add - local.tee $8 + local.tee $7 i32.const 32 i32.lt_s if @@ -14128,34 +14066,34 @@ local.get $2 i32.store offset=8 local.get $0 - local.get $4 - local.get $14 - local.get $4 + local.get $6 + local.get $9 + local.get $6 i32.const 31 i32.add - local.tee $3 - local.get $3 - local.get $14 + local.tee $5 + local.get $5 + local.get $9 i32.gt_s select - local.tee $6 - local.get $8 + local.tee $5 + local.get $7 local.get $2 call $~lib/util/sort/insertionSort end - local.get $1 - local.get $4 + local.get $3 + local.get $6 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $14 + local.get $9 i32.const 1 i32.add i64.extend_i32_u - local.tee $10 + local.tee $13 i64.div_u - local.get $4 + local.get $5 local.get $6 i32.add i32.const 1 @@ -14163,132 +14101,132 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $10 + local.get $13 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $3 + local.set $7 loop $for-loop|3 - local.get $3 + local.get $1 local.get $7 - i32.lt_u + i32.gt_u if - local.get $7 + local.get $1 i32.const 2 i32.shl - local.tee $9 - local.get $13 + local.tee $14 + local.get $10 i32.add - local.tee $8 - i32.load local.tee $15 + i32.load + local.tee $8 i32.const -1 i32.ne if - local.get $9 - local.get $12 + local.get $11 + local.get $14 i32.add i32.load i32.const 1 i32.add - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 - local.get $15 - local.get $1 - local.get $5 - local.get $11 + local.get $8 + local.get $3 + local.get $4 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns - local.get $8 + local.get $15 i32.const -1 i32.store - local.get $15 - local.set $1 + local.get $8 + local.set $3 end - local.get $7 + local.get $1 i32.const 1 i32.sub - local.set $7 + local.set $1 br $for-loop|3 end end - local.get $3 + local.get $7 i32.const 2 i32.shl - local.tee $7 - local.get $13 + local.tee $1 + local.get $10 i32.add - local.get $1 + local.get $3 i32.store - local.get $7 - local.get $12 + local.get $1 + local.get $11 i32.add - local.get $5 - i32.store local.get $4 - local.set $1 + i32.store local.get $6 - local.set $5 - local.get $3 - local.set $7 + local.set $3 + local.get $5 + local.set $4 + local.get $7 + local.set $1 br $while-continue|2 end end loop $for-loop|4 - local.get $7 + local.get $1 if - local.get $7 + local.get $1 i32.const 2 i32.shl - local.tee $1 - local.get $13 + local.tee $3 + local.get $10 i32.add i32.load - local.tee $3 + local.tee $4 i32.const -1 i32.ne if - local.get $1 - local.get $12 + local.get $3 + local.get $11 i32.add i32.load i32.const 1 i32.add - local.set $1 + local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 + local.get $4 local.get $3 - local.get $1 - local.get $14 - local.get $11 + local.get $9 + local.get $12 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $7 + local.get $1 i32.const 1 i32.sub - local.set $7 + local.set $1 br $for-loop|4 end end - local.get $11 + local.get $12 call $~lib/rt/tlsf/__free - local.get $13 + local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 36 i32.add global.set $~lib/memory/__stack_pointer ) @@ -14391,7 +14329,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) + block $__inlined_func$std/array/isSorted<~lib/array/Array>$672 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -14409,7 +14347,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14422,8 +14360,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $1 global.get $~lib/memory/__stack_pointer @@ -14439,7 +14377,7 @@ if global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=8 + i32.store offset=12 local.get $5 local.get $1 i32.const 1 @@ -14451,7 +14389,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=8 + i32.store offset=12 local.get $5 local.get $1 call $~lib/array/Array#__get @@ -14461,6 +14399,12 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + drop local.get $2 local.get $3 local.get $0 @@ -14470,11 +14414,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$672 end local.get $1 i32.const 1 @@ -14484,7 +14428,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -14901,7 +14845,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$~lib/string/String#concat$736 + block $__inlined_func$~lib/string/String#concat$748 local.get $1 i32.const 20 i32.sub @@ -14920,7 +14864,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/string/String#concat$736 + br $__inlined_func$~lib/string/String#concat$748 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -15109,7 +15053,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$738 + block $__inlined_func$~lib/util/string/joinIntegerArray$750 local.get $0 i32.const 1 i32.sub @@ -15123,7 +15067,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$750 end local.get $7 i32.eqz @@ -15136,7 +15080,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$750 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15235,7 +15179,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$738 + br $__inlined_func$~lib/util/string/joinIntegerArray$750 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -15301,7 +15245,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$739 + block $__inlined_func$~lib/util/string/joinIntegerArray$751 local.get $0 i32.const 1 i32.sub @@ -15315,7 +15259,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$751 end local.get $7 i32.eqz @@ -15328,7 +15272,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$751 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15427,7 +15371,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$739 + br $__inlined_func$~lib/util/string/joinIntegerArray$751 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16206,7 +16150,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$740 + block $__inlined_func$~lib/util/string/joinIntegerArray$752 local.get $0 i32.const 1 i32.sub @@ -16220,7 +16164,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$752 end local.get $6 i32.eqz @@ -16233,7 +16177,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$752 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -16326,7 +16270,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$740 + br $__inlined_func$~lib/util/string/joinIntegerArray$752 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16402,7 +16346,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$485 + block $__inlined_func$~lib/util/number/utoa64$493 local.get $3 i64.eqz if @@ -16412,7 +16356,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7712 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$485 + br $__inlined_func$~lib/util/number/utoa64$493 end local.get $3 i64.const 4294967295 @@ -16751,7 +16695,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$743 + block $__inlined_func$~lib/util/string/joinIntegerArray$755 local.get $0 i32.const 1 i32.sub @@ -16765,7 +16709,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$755 end local.get $6 i32.eqz @@ -16778,7 +16722,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$755 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -16871,7 +16815,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$743 + br $__inlined_func$~lib/util/string/joinIntegerArray$755 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -21110,7 +21054,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$714 + block $__inlined_func$~lib/array/Array#indexOf$726 local.get $2 i32.load offset=12 local.tee $4 @@ -21126,7 +21070,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$714 + br $__inlined_func$~lib/array/Array#indexOf$726 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21152,7 +21096,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$714 + br $__inlined_func$~lib/array/Array#indexOf$726 end local.get $0 i32.const 1 @@ -21204,7 +21148,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$715 + block $__inlined_func$~lib/array/Array#indexOf$727 local.get $2 i32.load offset=12 local.tee $4 @@ -21220,7 +21164,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$715 + br $__inlined_func$~lib/array/Array#indexOf$727 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21246,7 +21190,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$715 + br $__inlined_func$~lib/array/Array#indexOf$727 end local.get $0 i32.const 1 @@ -21557,7 +21501,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$716 (result i32) + block $__inlined_func$~lib/array/Array#includes$728 (result i32) i32.const 1 i32.const 2 i32.const 9 @@ -21597,7 +21541,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$716 + br $__inlined_func$~lib/array/Array#includes$728 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21625,7 +21569,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$716 + br $__inlined_func$~lib/array/Array#includes$728 end local.get $0 i32.const 1 @@ -21649,7 +21593,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$717 (result i32) + block $__inlined_func$~lib/array/Array#includes$729 (result i32) i32.const 1 i32.const 3 i32.const 12 @@ -21689,7 +21633,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$717 + br $__inlined_func$~lib/array/Array#includes$729 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21717,7 +21661,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$717 + br $__inlined_func$~lib/array/Array#includes$729 end local.get $0 i32.const 1 @@ -24127,7 +24071,7 @@ i32.const 9296 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24135,11 +24079,9 @@ i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.const 20 + memory.fill global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -24178,7 +24120,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 + i32.store offset=12 local.get $4 i32.const 2 i32.shl @@ -24194,6 +24136,12 @@ i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 9296 + i32.store offset=8 + i32.const 9300 + i32.load + drop + global.get $~lib/memory/__stack_pointer local.get $12 local.get $4 local.get $2 @@ -24201,7 +24149,7 @@ i32.load call_indirect (type $1) local.tee $12 - i32.store offset=12 + i32.store offset=16 local.get $10 local.get $11 i32.add @@ -24219,7 +24167,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $9 @@ -24233,7 +24181,7 @@ i32.const 9328 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24244,8 +24192,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -24284,7 +24232,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 + i32.store offset=12 local.get $4 i32.const 2 i32.shl @@ -24299,6 +24247,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 9328 + i32.store offset=8 + i32.const 9332 + i32.load + drop local.get $10 local.get $11 i32.add @@ -24317,7 +24271,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $9 @@ -27071,7 +27025,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) + block $__inlined_func$std/array/isSorted<~lib/string/String|null>$674 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -27089,7 +27043,7 @@ i32.const 11696 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27100,8 +27054,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 i32.const 1 local.set $1 global.get $~lib/memory/__stack_pointer @@ -27117,7 +27071,7 @@ if global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=8 + i32.store offset=12 local.get $4 local.get $1 i32.const 1 @@ -27129,7 +27083,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=8 + i32.store offset=12 local.get $4 local.get $1 call $~lib/array/Array#__get @@ -27139,6 +27093,12 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 11696 + i32.store offset=8 + i32.const 11700 + i32.load + drop local.get $9 local.get $10 i32.const 11696 @@ -27148,11 +27108,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 + br $__inlined_func$std/array/isSorted<~lib/string/String|null>$674 end local.get $1 i32.const 1 @@ -27162,7 +27122,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -27184,7 +27144,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -27224,7 +27184,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 end local.get $0 local.get $2 @@ -27235,7 +27195,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 end i32.const 0 local.set $1 @@ -27295,7 +27255,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 end local.get $1 i32.const 1 @@ -27495,7 +27455,7 @@ global.get $~lib/memory/__stack_pointer i32.const 10032 i32.store - block $__inlined_func$~lib/string/String#charAt$737 + block $__inlined_func$~lib/string/String#charAt$749 local.get $12 i32.const 10028 i32.load @@ -27509,7 +27469,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/string/String#charAt$737 + br $__inlined_func$~lib/string/String#charAt$749 end global.get $~lib/memory/__stack_pointer i32.const 2 @@ -28313,7 +28273,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$741 + block $__inlined_func$~lib/util/string/joinIntegerArray$753 local.get $1 i32.const 1 i32.sub @@ -28327,7 +28287,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$753 end local.get $1 i32.eqz @@ -28340,7 +28300,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$753 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -28437,7 +28397,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$741 + br $__inlined_func$~lib/util/string/joinIntegerArray$753 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28531,7 +28491,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$742 + block $__inlined_func$~lib/util/string/joinIntegerArray$754 local.get $1 i32.const 1 i32.sub @@ -28545,7 +28505,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$754 end local.get $1 i32.eqz @@ -28558,7 +28518,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$754 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -28655,7 +28615,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$742 + br $__inlined_func$~lib/util/string/joinIntegerArray$754 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30458,7 +30418,7 @@ i32.const 15984 i32.store offset=48 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -30467,7 +30427,7 @@ br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $1 @@ -30507,7 +30467,7 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=12 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 @@ -30525,6 +30485,12 @@ i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer + i32.const 15984 + i32.store offset=12 + i32.const 15988 + i32.load + drop + global.get $~lib/memory/__stack_pointer local.get $10 local.get $4 local.get $1 @@ -30532,7 +30498,7 @@ i32.load call_indirect (type $1) local.tee $10 - i32.store offset=16 + i32.store offset=20 local.get $8 local.get $9 i32.add @@ -30550,7 +30516,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -30873,6 +30839,756 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $5) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store + i32.const 10548 + i32.load + drop + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=4 + i32.const 10548 + i32.load + drop + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $6 + local.get $4 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10544 + i32.store offset=8 + i32.const 10548 + i32.load + drop + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16192 + i32.lt_s + if + i32.const 48992 + i32.const 49040 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store + i32.const 10852 + i32.load + drop + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=4 + i32.const 10852 + i32.load + drop + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 10848 + i32.store offset=8 + i32.const 10852 + i32.load + drop + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat index eecfcbe17e..cc30955558 100644 --- a/tests/compiler/std/staticarray.debug.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -39,6 +39,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 2864)) (global $~lib/memory/__data_end i32 (i32.const 2936)) @@ -2943,7 +2944,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -2996,9 +3011,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $2) i32.const 0 @@ -3028,9 +3050,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $2) i32.const 0 @@ -3076,9 +3105,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $2) i32.const 0 @@ -3116,161 +3152,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $2) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $2) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $2) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -3330,6 +3215,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -3421,9 +3315,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $2) i32.const 0 @@ -3460,6 +3361,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -6120,22 +6025,26 @@ (local $out i32) (local $outStart i32) (local $i i32) + (local $6 i32) (local $result i32) - (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $this - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 + local.get $8 call $~lib/staticarray/StaticArray#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -6147,11 +6056,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 + local.get $8 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -6169,14 +6078,21 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $3) local.set $result @@ -6197,34 +6113,35 @@ end end local.get $out - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $~lib/staticarray/StaticArray#forEach (param $this i32) (param $fn i32) (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6240,14 +6157,21 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $5) local.get $i @@ -6258,7 +6182,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -6448,8 +6372,9 @@ (local $len i32) (local $value i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -6458,6 +6383,9 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 2 i32.const 7 i32.const 0 @@ -6467,11 +6395,11 @@ i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=4 - local.get $6 + local.get $7 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6489,23 +6417,30 @@ local.get $value local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=4 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $3) if local.get $result - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=4 - local.get $6 + local.get $7 local.get $value call $~lib/array/Array#push drop @@ -6518,12 +6453,12 @@ end end local.get $result - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $~lib/staticarray/StaticArray#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) @@ -6531,24 +6466,25 @@ (local $i i32) (local $len i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6565,14 +6501,21 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $4) local.set $acc @@ -6584,34 +6527,35 @@ end end local.get $acc - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $~lib/staticarray/StaticArray#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) (local $acc i32) (local $i i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store local.get $initialValue local.set $acc local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 call $~lib/staticarray/StaticArray#get:length i32.const 1 i32.sub @@ -6630,14 +6574,21 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $6 i32.store - local.get $5 + local.get $6 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -6649,34 +6600,35 @@ end end local.get $acc - local.set $5 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $6 return ) (func $~lib/staticarray/StaticArray#some (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6692,24 +6644,31 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $3) if i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -6720,34 +6679,35 @@ end end i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $~lib/staticarray/StaticArray#every (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6763,25 +6723,32 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $3) i32.eqz if i32.const 0 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -6792,34 +6759,35 @@ end end i32.const 1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $~lib/staticarray/StaticArray#findIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) + (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6835,24 +6803,31 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 i32.load call_indirect (type $3) if local.get $i - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return end local.get $i @@ -6863,31 +6838,32 @@ end end i32.const -1 - local.set $4 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $5 return ) (func $~lib/staticarray/StaticArray#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $3 i32) + (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 call $~lib/staticarray/StaticArray#get:length i32.const 1 i32.sub @@ -6905,24 +6881,31 @@ i32.load local.get $i local.get $this - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store - local.get $3 + local.get $4 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 i32.load call_indirect (type $3) if local.get $i - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return end local.get $i @@ -6933,22 +6916,25 @@ end end i32.const -1 - local.set $3 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $4 return ) (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -6959,29 +6945,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -6991,7 +6980,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -7023,9 +7012,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $2) i32.const 0 @@ -7047,9 +7043,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $2) i32.const 0 @@ -7070,34 +7073,41 @@ end local.get $ptr i32.load - local.set $a|7 + local.set $a|9 local.get $ptr i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $2) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -7109,14 +7119,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -7180,11 +7190,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -7196,13 +7206,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -7211,11 +7221,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -7235,11 +7245,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -7253,15 +7263,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -7270,11 +7280,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -7285,14 +7295,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -7305,7 +7315,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -7315,26 +7325,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -7362,27 +7372,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -7392,17 +7402,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -7411,7 +7421,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10338,4 +10348,207 @@ local.get $7 return ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) ) diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 5db8f652ff..47b2d389cf 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -260,7 +260,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$267 + block $__inlined_func$~lib/rt/itcms/Object#unlink$270 local.get $0 i32.load offset=4 i32.const -4 @@ -284,7 +284,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$267 + br $__inlined_func$~lib/rt/itcms/Object#unlink$270 end local.get $0 i32.load offset=8 @@ -1803,6 +1803,27 @@ (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -1833,17 +1854,23 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $4 i32.load offset=4 + local.set $3 + local.get $4 + i32.load local.tee $5 local.set $4 - local.get $3 - i32.load - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3876 + i32.load + drop local.get $5 + local.get $3 i32.const 3872 i32.load call_indirect (type $0) @@ -1864,25 +1891,30 @@ local.get $5 i32.le_s if - block $while-break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 - local.get $3 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + i32.const 3876 + i32.load + drop + local.get $7 + local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $7 i32.store offset=8 @@ -1899,33 +1931,38 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $5 i32.le_s if - block $while-break|2 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - local.get $7 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + i32.const 3876 + i32.load + drop + local.get $7 + local.get $3 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $4 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $7 i32.store offset=4 local.get $5 @@ -1941,7 +1978,7 @@ i32.const 2 i32.shl i32.add - local.get $4 + local.get $3 i32.store offset=4 local.get $6 i32.const 2 @@ -1950,171 +1987,53 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - local.get $3 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) (local $6 i32) (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $5 - local.get $3 + local.tee $2 i32.add local.set $6 - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $5 loop $for-loop|0 local.get $1 - local.get $2 + local.get $5 i32.lt_s if - local.get $2 + local.get $5 i32.const 1 i32.sub - local.tee $2 + local.tee $5 i32.const 2 i32.shl local.tee $7 @@ -2129,28 +2048,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $5 - i32.gt_s + i32.lt_s if local.get $4 local.get $6 - local.get $5 + local.get $2 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 br $for-loop|1 end end @@ -2160,14 +2079,14 @@ i32.le_s if local.get $4 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add i32.load local.set $6 local.get $4 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add @@ -2175,6 +2094,12 @@ local.set $7 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3876 + i32.load + drop local.get $6 local.get $7 i32.const 3872 @@ -2190,10 +2115,10 @@ i32.add local.get $6 i32.store - local.get $5 + local.get $2 i32.const 1 i32.sub - local.set $5 + local.set $2 else local.get $0 local.get $1 @@ -2202,10 +2127,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 end local.get $1 i32.const 1 @@ -2214,6 +2139,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3144,7 +3073,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$106 + block $__inlined_func$~lib/util/string/compareImpl$108 loop $while-continue|1 local.get $0 local.tee $3 @@ -3164,7 +3093,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$106 + br_if $__inlined_func$~lib/util/string/compareImpl$108 local.get $2 i32.const 2 i32.add @@ -3376,7 +3305,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 local.get $0 i32.const 20 i32.sub @@ -3396,7 +3325,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $2 - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 end local.get $2 i32.const 0 @@ -3438,7 +3367,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 end local.get $2 i32.const 1 @@ -3976,7 +3905,7 @@ (local $9 i32) (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -3989,6 +3918,9 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 i32.const 7 i32.const 0 call $~lib/rt/__newArray @@ -4021,6 +3953,12 @@ i32.store offset=4 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=8 + i32.const 3476 + i32.load + drop local.get $8 local.get $9 local.get $0 @@ -4088,7 +4026,7 @@ global.get $~lib/memory/__stack_pointer local.get $10 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$224 + block $__inlined_func$~lib/rt/itcms/__renew$227 i32.const 1073741820 local.get $1 i32.const 1 @@ -4131,7 +4069,7 @@ i32.store offset=16 local.get $1 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$224 + br $__inlined_func$~lib/rt/itcms/__renew$227 end local.get $4 local.get $3 @@ -4202,7 +4140,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $10 @@ -4220,7 +4158,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4235,8 +4173,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4263,6 +4201,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -4270,7 +4214,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -4284,7 +4228,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -4294,7 +4238,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4309,8 +4253,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4337,6 +4281,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -4345,7 +4295,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -4359,7 +4309,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -4369,7 +4319,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4384,8 +4334,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4412,6 +4362,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -4419,7 +4375,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -4433,7 +4389,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -4442,7 +4398,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4457,8 +4413,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4487,6 +4443,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -4494,7 +4456,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -4508,7 +4470,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -4528,7 +4490,7 @@ (local $13 i32) (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4543,8 +4505,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -4574,6 +4539,12 @@ local.set $2 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3876 + i32.load + drop local.get $0 local.get $2 local.get $1 @@ -4592,6 +4563,12 @@ local.set $4 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + i32.const 3876 + i32.load + drop local.get $1 local.get $2 local.get $3 @@ -4625,6 +4602,12 @@ local.set $2 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + i32.const 3876 + i32.load + drop local.get $0 local.get $2 local.get $1 @@ -4648,7 +4631,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -4717,7 +4700,7 @@ local.set $11 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -4734,7 +4717,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -4758,7 +4741,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -4777,7 +4760,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 local.get $5 local.get $8 @@ -4845,7 +4828,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 local.get $7 local.get $2 @@ -4910,7 +4893,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store + i32.store offset=12 local.get $0 local.get $3 local.get $2 @@ -4930,13 +4913,13 @@ local.get $9 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -6300,7 +6283,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$279 (result i32) i32.const 8 i32.const 10 call $~lib/rt/itcms/__new @@ -6341,7 +6324,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + br $__inlined_func$~lib/staticarray/StaticArray#includes$279 end loop $while-continue|0 local.get $1 @@ -6363,7 +6346,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$276 + br $__inlined_func$~lib/staticarray/StaticArray#includes$279 end local.get $1 i32.const 1 @@ -6387,7 +6370,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$280 (result i32) i32.const 4 i32.const 11 call $~lib/rt/itcms/__new @@ -6428,7 +6411,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + br $__inlined_func$~lib/staticarray/StaticArray#includes$280 end loop $while-continue|030 local.get $1 @@ -6450,7 +6433,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$277 + br $__inlined_func$~lib/staticarray/StaticArray#includes$280 end local.get $1 i32.const 1 @@ -7264,7 +7247,7 @@ i32.const 3408 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7275,6 +7258,9 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $2 i32.store global.get $~lib/memory/__stack_pointer @@ -7316,6 +7302,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=8 + i32.const 3412 + i32.load + drop local.get $7 local.get $8 i32.add @@ -7334,7 +7326,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $6 @@ -7394,7 +7386,7 @@ i32.const 3440 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7402,8 +7394,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer @@ -7432,6 +7424,12 @@ i32.store i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=4 + i32.const 3444 + i32.load + drop local.get $1 local.get $2 i32.const 3440 @@ -7445,7 +7443,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer global.get $std/staticarray/maxVal @@ -7526,7 +7524,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7534,8 +7532,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer @@ -7565,6 +7563,12 @@ i32.store i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=4 + i32.const 3508 + i32.load + drop local.get $1 local.get $6 local.get $0 @@ -7581,7 +7585,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -7604,7 +7608,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7612,8 +7616,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -7643,6 +7647,12 @@ i32.store i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=4 + i32.const 3540 + i32.load + drop local.get $1 local.get $5 local.get $0 @@ -7659,7 +7669,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -8066,4 +8076,191 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 3960 + i32.lt_s + if + i32.const 36752 + i32.const 36800 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store + i32.const 3876 + i32.load + drop + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=4 + i32.const 3876 + i32.load + drop + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3872 + i32.store offset=8 + i32.const 3876 + i32.load + drop + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) ) diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat index 9b7671a355..3c9fc11597 100644 --- a/tests/compiler/std/typedarray.debug.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -84,6 +84,7 @@ (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) @@ -2722,7 +2723,21 @@ (local $b f64) (local $min f64) (local $max f64) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -2775,9 +2790,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $12) i32.const 0 @@ -2807,9 +2829,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $12) i32.const 0 @@ -2855,9 +2884,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $12) i32.const 0 @@ -2895,161 +2931,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp f64) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $12) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $12) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - f64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - f64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $12) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -3109,6 +2994,15 @@ (local $k i32) (local $a f64) (local $b f64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -3200,9 +3094,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $12) i32.const 0 @@ -3239,6 +3140,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) (local $ia i64) @@ -8514,7 +8419,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -8567,9 +8486,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -8599,9 +8525,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -8647,9 +8580,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -8687,161 +8627,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 0 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $tmp - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - local.get $tmp - i32.store8 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -8850,6 +8639,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -8941,9 +8739,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -8980,6 +8785,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -9008,7 +8817,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -9061,9 +8884,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -9093,9 +8923,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -9141,9 +8978,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -9181,161 +9025,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 0 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $tmp - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - local.get $tmp - i32.store8 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -9344,6 +9037,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -9435,9 +9137,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -9474,6 +9183,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -9550,7 +9263,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -9603,9 +9330,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -9635,9 +9369,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -9683,9 +9424,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -9723,161 +9471,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $tmp - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - local.get $tmp - i32.store16 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -9886,6 +9483,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -9977,9 +9583,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -10016,6 +9629,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -10044,7 +9661,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -10097,9 +9728,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -10129,9 +9767,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -10177,9 +9822,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -10217,161 +9869,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $tmp - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - local.get $tmp - i32.store16 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -10380,6 +9881,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -10471,9 +9981,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -10510,6 +10027,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -10552,7 +10073,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -10605,9 +10140,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -10637,9 +10179,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -10685,9 +10234,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -10725,161 +10281,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -10888,6 +10293,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -10979,9 +10393,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -11018,6 +10439,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -11040,7 +10465,21 @@ (local $b i32) (local $min i32) (local $max i32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -11093,9 +10532,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -11125,9 +10571,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -11173,9 +10626,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -11213,161 +10673,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -11376,6 +10685,15 @@ (local $k i32) (local $a i32) (local $b i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -11467,9 +10785,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -11506,6 +10831,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -11532,7 +10861,21 @@ (local $b i64) (local $min i64) (local $max i64) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -11585,9 +10928,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -11617,9 +10967,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -11665,9 +11022,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -11705,161 +11069,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i64) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - i64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - i64.load - i64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - i64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -11868,6 +11081,15 @@ (local $k i32) (local $a i64) (local $b i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -11959,9 +11181,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -11998,6 +11227,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) local.get $a @@ -12024,7 +11257,21 @@ (local $b i64) (local $min i64) (local $max i64) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -12077,9 +11324,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -12109,9 +11363,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -12157,9 +11418,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -12197,161 +11465,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp i64) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - i64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - i64.load - i64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - i64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -12360,6 +11477,15 @@ (local $k i32) (local $a i64) (local $b i64) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -12451,9 +11577,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -12490,6 +11623,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) local.get $a @@ -12516,7 +11653,21 @@ (local $b f32) (local $min f32) (local $max f32) + (local $11 i32) (local $j i32) + (local $13 i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -12569,9 +11720,16 @@ local.set $max local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $13) i32.const 0 @@ -12601,9 +11759,16 @@ local.set $a local.get $a local.get $max + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $13 + i32.store offset=4 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 i32.load call_indirect (type $13) i32.const 0 @@ -12649,9 +11814,16 @@ local.set $a local.get $a local.get $min + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $14 + i32.store offset=8 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 i32.load call_indirect (type $13) i32.const 0 @@ -12689,161 +11861,10 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $k i32) - (local $tmp f32) - local.get $i - local.get $right - i32.eq - if - local.get $i - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - f32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - f32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $comparator - i32.load - call_indirect (type $13) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - return + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -12852,6 +11873,15 @@ (local $k i32) (local $a f32) (local $b f32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store local.get $m i32.const 1 i32.sub @@ -12943,9 +11973,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $12 + i32.store + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 i32.load call_indirect (type $13) i32.const 0 @@ -12982,6 +12019,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) (local $ia i32) @@ -16526,10 +15567,13 @@ (local $3 i32) (local $a f64) (local $b f64) + (local $6 i32) (local $c i32) - (local $a|7 f64) - (local $b|8 f64) - (local $c|9 i32) + (local $8 i32) + (local $a|9 f64) + (local $b|10 f64) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -16540,29 +15584,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -16572,7 +15619,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16604,9 +15651,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $12) i32.const 0 @@ -16628,9 +15682,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $12) i32.const 0 @@ -16651,34 +15712,41 @@ end local.get $ptr f64.load - local.set $a|7 + local.set $a|9 local.get $ptr f64.load offset=8 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $12) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select f64.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select f64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16690,14 +15758,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -16761,11 +15829,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -16777,13 +15845,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -16792,11 +15860,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16816,11 +15884,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -16834,15 +15902,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -16851,11 +15919,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16866,14 +15934,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -16886,7 +15954,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -16896,26 +15964,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -16943,27 +16011,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -16973,17 +16041,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -16992,7 +16060,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -18413,8 +17481,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18422,8 +17491,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18436,21 +17505,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -18467,14 +17536,21 @@ i32.load8_s local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18488,12 +17564,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" @@ -18628,8 +17704,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18637,8 +17714,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18651,21 +17728,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -18682,14 +17759,21 @@ i32.load8_u local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18703,12 +17787,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" @@ -18801,8 +17885,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18810,8 +17895,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18824,21 +17909,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -18855,14 +17940,21 @@ i32.load8_u local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18876,12 +17968,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" @@ -19021,8 +18113,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19030,8 +18123,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -19044,21 +18137,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -19075,14 +18168,21 @@ i32.load16_s local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -19096,12 +18196,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" @@ -19240,8 +18340,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19249,8 +18350,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -19263,21 +18364,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -19294,14 +18395,21 @@ i32.load16_u local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -19315,12 +18423,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" @@ -19413,8 +18521,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19422,8 +18531,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -19436,21 +18545,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -19467,14 +18576,21 @@ i32.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -19488,12 +18604,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" @@ -19631,8 +18747,9 @@ (local $i i32) (local $k i32) (local $9 i32) + (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19640,8 +18757,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -19654,21 +18771,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -19685,14 +18802,21 @@ i32.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -19706,12 +18830,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" @@ -19849,9 +18973,10 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i64) + (local $10 i32) + (local $11 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19859,8 +18984,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -19873,21 +18998,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -19904,14 +19029,21 @@ i64.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -19925,12 +19057,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" @@ -20068,9 +19200,10 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i64) + (local $10 i32) + (local $11 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -20078,8 +19211,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -20092,21 +19225,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -20123,14 +19256,21 @@ i64.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -20144,12 +19284,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" @@ -20287,9 +19427,10 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -20297,8 +19438,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) global.get $~lib/memory/__stack_pointer local.get $this @@ -20311,21 +19452,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -20342,14 +19483,21 @@ f32.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $20) local.set $initialValue|5 @@ -20363,12 +19511,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" @@ -20459,9 +19607,10 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -20469,8 +19618,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) global.get $~lib/memory/__stack_pointer local.get $this @@ -20483,21 +19632,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -20514,14 +19663,21 @@ f64.load local.get $i local.get $array - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $10 i32.store offset=8 - local.get $9 + local.get $10 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $9 + i32.store offset=12 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 i32.load call_indirect (type $21) local.set $initialValue|5 @@ -20535,12 +19691,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" @@ -22459,8 +21615,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22468,8 +21625,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22482,19 +21639,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Int8Array#get:length i32.const 1 i32.sub @@ -22513,14 +21670,21 @@ i32.load8_s local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22534,12 +21698,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" @@ -22630,8 +21794,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22639,8 +21804,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22653,19 +21818,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Uint8Array#get:length i32.const 1 i32.sub @@ -22684,14 +21849,21 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22705,12 +21877,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" @@ -22802,8 +21974,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22811,8 +21984,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22825,19 +21998,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#get:length i32.const 1 i32.sub @@ -22856,14 +22029,21 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22877,12 +22057,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" @@ -22974,8 +22154,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22983,8 +22164,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22997,19 +22178,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -23028,14 +22209,21 @@ i32.load16_s local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -23049,12 +22237,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" @@ -23145,8 +22333,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23154,8 +22343,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -23168,19 +22357,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Uint16Array#get:length i32.const 1 i32.sub @@ -23199,14 +22388,21 @@ i32.load16_u local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -23220,12 +22416,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" @@ -23317,8 +22513,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23326,8 +22523,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -23340,19 +22537,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -23371,14 +22568,21 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -23392,12 +22596,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" @@ -23487,8 +22691,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23496,8 +22701,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -23510,19 +22715,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Uint32Array#get:length i32.const 1 i32.sub @@ -23541,14 +22746,21 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -23562,12 +22774,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" end - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" @@ -23657,9 +22869,10 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i64) + (local $9 i32) + (local $10 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23667,8 +22880,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -23681,19 +22894,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -23712,14 +22925,21 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -23733,12 +22953,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" @@ -23828,9 +23048,10 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i64) + (local $9 i32) + (local $10 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23838,8 +23059,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -23852,19 +23073,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Uint64Array#get:length i32.const 1 i32.sub @@ -23883,14 +23104,21 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -23904,12 +23132,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" @@ -23999,9 +23227,10 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 f32) + (local $9 i32) + (local $10 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -24009,8 +23238,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) global.get $~lib/memory/__stack_pointer local.get $this @@ -24023,19 +23252,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Float32Array#get:length i32.const 1 i32.sub @@ -24054,14 +23283,21 @@ f32.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $20) local.set $initialValue|5 @@ -24075,12 +23311,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" @@ -24170,9 +23406,10 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 f64) + (local $9 i32) + (local $10 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -24180,8 +23417,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) global.get $~lib/memory/__stack_pointer local.get $this @@ -24194,19 +23431,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 call $~lib/typedarray/Float64Array#get:length i32.const 1 i32.sub @@ -24225,14 +23462,21 @@ f64.load local.get $i local.get $array - local.set $8 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $9 i32.store offset=8 - local.get $8 + local.get $9 + global.get $~lib/memory/__stack_pointer i32.const 4 global.set $~argumentsLength local.get $fn|4 + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $21) local.set $initialValue|5 @@ -24246,12 +23490,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" end - local.set $9 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $10 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" @@ -24344,14 +23588,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24363,19 +23608,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Int8Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24414,14 +23659,21 @@ i32.load8_s local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -24448,12 +23700,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" @@ -24592,14 +23844,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24611,19 +23864,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Uint8Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24662,14 +23915,21 @@ i32.load8_u local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -24696,12 +23956,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Uint8Array#__get (param $this i32) (param $index i32) (result i32) @@ -24885,14 +24145,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24904,19 +24165,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24955,14 +24216,21 @@ i32.load8_u local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -24989,12 +24257,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" @@ -25133,14 +24401,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25152,19 +24421,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Int16Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25203,14 +24472,21 @@ i32.load16_s local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store16 @@ -25237,12 +24513,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Int16Array#__get (param $this i32) (param $index i32) (result i32) @@ -25430,14 +24706,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25449,19 +24726,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Uint16Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25500,14 +24777,21 @@ i32.load16_u local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store16 @@ -25534,12 +24818,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Uint16Array#__get (param $this i32) (param $index i32) (result i32) @@ -25727,14 +25011,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25746,19 +25031,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Int32Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25797,14 +25082,21 @@ i32.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store @@ -25831,12 +25123,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" @@ -25975,14 +25267,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25994,19 +25287,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Uint32Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26045,14 +25338,21 @@ i32.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $1) i32.store @@ -26079,12 +25379,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Uint32Array#__get (param $this i32) (param $index i32) (result i32) @@ -26272,14 +25572,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26291,19 +25592,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Int64Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26342,14 +25643,21 @@ i64.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $22) i64.store @@ -26376,12 +25684,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Int64Array#__get (param $this i32) (param $index i32) (result i64) @@ -26570,14 +25878,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26589,19 +25898,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Uint64Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26640,14 +25949,21 @@ i64.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $22) i64.store @@ -26674,12 +25990,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Uint64Array#__get (param $this i32) (param $index i32) (result i64) @@ -26868,14 +26184,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26887,19 +26204,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Float32Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26938,14 +26255,21 @@ f32.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $30) f32.store @@ -26972,12 +26296,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) @@ -27166,14 +26490,15 @@ (local $buf i32) (local $i i32) (local $10 i32) + (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27185,19 +26510,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/typedarray/Float64Array#get:length local.set $len local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -27236,14 +26561,21 @@ f64.load local.get $i local.get $array - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $11 i32.store offset=8 - local.get $10 + local.get $11 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $10 + i32.store offset=20 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 i32.load call_indirect (type $31) f64.store @@ -27270,12 +26602,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $10 + local.set $11 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $11 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" @@ -27415,17 +26747,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27437,11 +26770,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Int8Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -27459,11 +26792,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -27485,24 +26818,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add @@ -27540,12 +26880,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" @@ -27739,17 +27079,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27761,11 +27102,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Uint8Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -27783,11 +27124,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -27809,24 +27150,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add @@ -27864,12 +27212,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" @@ -28063,17 +27411,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28085,11 +27434,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28107,11 +27456,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28133,24 +27482,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add @@ -28188,12 +27544,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" @@ -28387,17 +27743,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28409,11 +27766,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Int16Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28431,11 +27788,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28457,24 +27814,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add @@ -28512,12 +27876,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" @@ -28711,17 +28075,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28733,11 +28098,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Uint16Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28755,11 +28120,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28781,24 +28146,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add @@ -28836,12 +28208,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" @@ -29035,17 +28407,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29057,11 +28430,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Int32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29079,11 +28452,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29105,24 +28478,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -29160,12 +28540,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" @@ -29359,17 +28739,18 @@ (local $i i32) (local $value i32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29381,11 +28762,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Uint32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29403,11 +28784,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29429,24 +28810,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -29484,12 +28872,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" @@ -29683,17 +29071,18 @@ (local $i i32) (local $value i64) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29705,11 +29094,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Int64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29727,11 +29116,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29753,24 +29142,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $7) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add @@ -29808,12 +29204,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" @@ -30007,17 +29403,18 @@ (local $i i32) (local $value i64) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -30029,11 +29426,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Uint64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -30051,11 +29448,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -30077,24 +29474,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $7) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add @@ -30132,12 +29536,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" @@ -30331,17 +29735,18 @@ (local $i i32) (local $value f32) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -30353,11 +29758,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Float32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -30375,11 +29780,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -30401,24 +29806,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $9) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add @@ -30456,12 +29868,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" @@ -30655,17 +30067,18 @@ (local $i i32) (local $value f64) (local $11 i32) + (local $12 i32) (local $byteLength i32) (local $data i32) - (local $14 i32) + (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -30677,11 +30090,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/typedarray/Float64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -30699,11 +30112,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -30725,24 +30138,31 @@ local.get $value local.get $i local.get $array - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - local.get $14 + local.get $15 i32.store offset=8 - local.get $14 + local.get $15 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $11 + i32.store offset=20 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $10) if local.get $buf local.get $j - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $j - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add @@ -30780,12 +30200,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $14 + local.set $15 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - local.get $14 + local.get $15 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" @@ -30975,8 +30395,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -30984,8 +30405,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -30996,21 +30417,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -31026,14 +30447,21 @@ i32.load8_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -31050,12 +30478,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" @@ -31170,8 +30598,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31179,8 +30608,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31191,21 +30620,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -31221,14 +30650,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -31245,12 +30681,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" @@ -31365,8 +30801,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31374,8 +30811,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31386,21 +30823,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -31416,14 +30853,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -31440,12 +30884,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" @@ -31560,8 +31004,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31569,8 +31014,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31581,21 +31026,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -31611,14 +31056,21 @@ i32.load16_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -31635,12 +31087,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" @@ -31755,8 +31207,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31764,8 +31217,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31776,21 +31229,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -31806,14 +31259,21 @@ i32.load16_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -31830,12 +31290,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" @@ -31950,8 +31410,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31959,8 +31420,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31971,21 +31432,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -32001,14 +31462,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -32025,12 +31493,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" @@ -32145,8 +31613,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32154,8 +31623,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32166,21 +31635,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -32196,14 +31665,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -32220,12 +31696,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" @@ -32340,8 +31816,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32349,8 +31826,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32361,21 +31838,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -32391,14 +31868,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -32415,12 +31899,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" @@ -32535,8 +32019,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32544,8 +32029,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32556,21 +32041,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -32586,14 +32071,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -32610,12 +32102,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" @@ -32730,8 +32222,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32739,8 +32232,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32751,21 +32244,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -32781,14 +32274,21 @@ f32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $9) if @@ -32805,12 +32305,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" @@ -32925,8 +32425,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32934,8 +32435,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32946,21 +32447,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -32976,14 +32477,21 @@ f64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $10) if @@ -33000,12 +32508,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" @@ -33120,8 +32628,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33129,8 +32638,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33141,21 +32650,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -33171,14 +32680,21 @@ i32.load8_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -33195,12 +32711,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" @@ -33316,8 +32832,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33325,8 +32842,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33337,21 +32854,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -33367,14 +32884,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -33391,12 +32915,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" @@ -33512,8 +33036,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33521,8 +33046,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33533,21 +33058,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -33563,14 +33088,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -33587,12 +33119,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" @@ -33708,8 +33240,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33717,8 +33250,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33729,21 +33262,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -33759,14 +33292,21 @@ i32.load16_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -33783,12 +33323,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" @@ -33904,8 +33444,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33913,8 +33454,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33925,21 +33466,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -33955,14 +33496,21 @@ i32.load16_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -33979,12 +33527,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" @@ -34100,8 +33648,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34109,8 +33658,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34121,21 +33670,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -34151,14 +33700,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -34175,12 +33731,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" @@ -34296,8 +33852,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34305,8 +33862,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34317,21 +33874,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -34347,14 +33904,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -34371,12 +33935,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" @@ -34492,8 +34056,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34501,8 +34066,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34513,21 +34078,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -34543,14 +34108,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -34567,12 +34139,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" @@ -34688,8 +34260,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34697,8 +34270,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34709,21 +34282,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -34739,14 +34312,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -34763,12 +34343,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" @@ -34884,8 +34464,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34893,8 +34474,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34905,21 +34486,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -34935,14 +34516,21 @@ f32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $9) if @@ -34959,12 +34547,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" @@ -35080,8 +34668,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35089,8 +34678,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35101,21 +34690,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -35131,14 +34720,21 @@ f64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $10) if @@ -35155,12 +34751,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" @@ -35275,8 +34871,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35284,8 +34881,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35296,19 +34893,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Int8Array#get:length i32.const 1 i32.sub @@ -35326,14 +34923,21 @@ i32.load8_s local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -35350,12 +34954,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" @@ -35470,8 +35074,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35479,8 +35084,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35491,19 +35096,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Uint8Array#get:length i32.const 1 i32.sub @@ -35521,14 +35126,21 @@ i32.load8_u local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -35545,12 +35157,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" @@ -35665,8 +35277,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35674,8 +35287,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35686,19 +35299,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Uint8ClampedArray#get:length i32.const 1 i32.sub @@ -35716,14 +35329,21 @@ i32.load8_u local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -35740,12 +35360,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" @@ -35860,8 +35480,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35869,8 +35490,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35881,19 +35502,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -35911,14 +35532,21 @@ i32.load16_s local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -35935,12 +35563,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" @@ -36055,8 +35683,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36064,8 +35693,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36076,19 +35705,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Uint16Array#get:length i32.const 1 i32.sub @@ -36106,14 +35735,21 @@ i32.load16_u local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -36130,12 +35766,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" @@ -36250,8 +35886,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36259,8 +35896,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36271,19 +35908,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -36301,14 +35938,21 @@ i32.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -36325,12 +35969,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" @@ -36445,8 +36089,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36454,8 +36099,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36466,19 +36111,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Uint32Array#get:length i32.const 1 i32.sub @@ -36496,14 +36141,21 @@ i32.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $1) if @@ -36520,12 +36172,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" @@ -36640,8 +36292,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36649,8 +36302,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36661,19 +36314,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -36691,14 +36344,21 @@ i64.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $7) if @@ -36715,12 +36375,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" @@ -36835,8 +36495,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36844,8 +36505,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36856,19 +36517,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Uint64Array#get:length i32.const 1 i32.sub @@ -36886,14 +36547,21 @@ i64.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $7) if @@ -36910,12 +36578,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" @@ -37030,8 +36698,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37039,8 +36708,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37051,19 +36720,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Float32Array#get:length i32.const 1 i32.sub @@ -37081,14 +36750,21 @@ f32.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $9) if @@ -37105,12 +36781,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" @@ -37225,8 +36901,9 @@ (local $ptr i32) (local $i i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37234,8 +36911,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37246,19 +36923,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 call $~lib/typedarray/Float64Array#get:length i32.const 1 i32.sub @@ -37276,14 +36953,21 @@ f64.load local.get $i local.get $array - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $7 i32.store offset=8 - local.get $6 + local.get $7 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $6 + i32.store offset=12 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $10) if @@ -37300,12 +36984,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $6 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $7 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" @@ -37421,8 +37105,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37430,8 +37115,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37442,21 +37127,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -37473,14 +37158,21 @@ i32.load8_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -37499,12 +37191,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" @@ -37619,8 +37311,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37628,8 +37321,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37640,21 +37333,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -37671,14 +37364,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -37697,12 +37397,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" @@ -37817,8 +37517,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37826,8 +37527,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37838,21 +37539,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -37869,14 +37570,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -37895,12 +37603,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" @@ -38015,8 +37723,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38024,8 +37733,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38036,21 +37745,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -38067,14 +37776,21 @@ i32.load16_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -38093,12 +37809,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" @@ -38213,8 +37929,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38222,8 +37939,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38234,21 +37951,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -38265,14 +37982,21 @@ i32.load16_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -38291,12 +38015,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" @@ -38411,8 +38135,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38420,8 +38145,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38432,21 +38157,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -38463,14 +38188,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -38489,12 +38221,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" @@ -38609,8 +38341,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38618,8 +38351,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38630,21 +38363,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -38661,14 +38394,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $1) if @@ -38687,12 +38427,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" @@ -38807,8 +38547,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38816,8 +38557,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38828,21 +38569,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -38859,14 +38600,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -38885,12 +38633,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" @@ -39005,8 +38753,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39014,8 +38763,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -39026,21 +38775,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -39057,14 +38806,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $7) if @@ -39083,12 +38839,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" @@ -39203,8 +38959,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39212,8 +38969,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -39224,21 +38981,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -39255,14 +39012,21 @@ f32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $9) if @@ -39281,12 +39045,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" @@ -39401,8 +39165,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39410,8 +39175,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -39422,21 +39187,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -39453,14 +39218,21 @@ f64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $10) if @@ -39479,12 +39251,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $8 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" @@ -39666,8 +39438,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39675,8 +39448,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -39686,21 +39459,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -39716,14 +39489,21 @@ i32.load8_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -39734,7 +39514,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -39919,8 +39699,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39928,8 +39709,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -39939,21 +39720,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -39969,14 +39750,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -39987,7 +39775,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40175,8 +39963,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40184,8 +39973,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40195,21 +39984,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -40225,14 +40014,21 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40243,7 +40039,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40429,8 +40225,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40438,8 +40235,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40449,21 +40246,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -40479,14 +40276,21 @@ i32.load16_s local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40497,7 +40301,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40682,8 +40486,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40691,8 +40496,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40702,21 +40507,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -40732,14 +40537,21 @@ i32.load16_u local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40750,7 +40562,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40934,8 +40746,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40943,8 +40756,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40954,21 +40767,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -40984,14 +40797,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -41002,7 +40822,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41180,8 +41000,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41189,8 +41010,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41200,21 +41021,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -41230,14 +41051,21 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $5) local.get $i @@ -41248,7 +41076,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41427,8 +41255,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41436,8 +41265,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41447,21 +41276,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -41477,14 +41306,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $26) local.get $i @@ -41495,7 +41331,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41677,8 +41513,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41686,8 +41523,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41697,21 +41534,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -41727,14 +41564,21 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $26) local.get $i @@ -41745,7 +41589,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41927,8 +41771,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41936,8 +41781,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41947,21 +41792,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -41977,14 +41822,21 @@ f32.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $37) local.get $i @@ -41995,7 +41847,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -42177,8 +42029,9 @@ (local $i i32) (local $k i32) (local $7 i32) + (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -42186,8 +42039,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -42197,21 +42050,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -42227,14 +42080,21 @@ f64.load local.get $i local.get $array - local.set $7 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $8 i32.store offset=8 - local.get $7 + local.get $8 + global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength local.get $fn|3 + local.tee $7 + i32.store offset=12 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 i32.load call_indirect (type $38) local.get $i @@ -42245,7 +42105,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -80467,10 +80327,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -80481,29 +80344,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -80513,7 +80379,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -80545,9 +80411,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -80569,9 +80442,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -80592,34 +80472,41 @@ end local.get $ptr i32.load8_s - local.set $a|7 + local.set $a|9 local.get $ptr i32.load8_s offset=1 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store8 local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -80631,14 +80518,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -80702,11 +80589,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -80718,13 +80605,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -80733,11 +80620,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -80757,11 +80644,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -80775,15 +80662,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -80792,11 +80679,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -80807,14 +80694,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -80827,7 +80714,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -80837,26 +80724,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -80884,27 +80771,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -80914,17 +80801,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -80933,7 +80820,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -81230,10 +81117,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -81244,29 +81134,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -81276,7 +81169,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -81308,9 +81201,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -81332,9 +81232,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -81355,34 +81262,41 @@ end local.get $ptr i32.load8_u - local.set $a|7 + local.set $a|9 local.get $ptr i32.load8_u offset=1 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store8 local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -81394,14 +81308,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -81465,11 +81379,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -81481,13 +81395,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -81496,11 +81410,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -81520,11 +81434,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -81538,15 +81452,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -81555,11 +81469,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -81570,14 +81484,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -81590,7 +81504,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -81600,26 +81514,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -81647,27 +81561,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -81677,17 +81591,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -81696,7 +81610,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -82278,10 +82192,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -82292,29 +82209,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -82324,7 +82244,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -82356,9 +82276,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -82380,9 +82307,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -82403,34 +82337,41 @@ end local.get $ptr i32.load16_s - local.set $a|7 + local.set $a|9 local.get $ptr i32.load16_s offset=2 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store16 local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store16 offset=2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -82442,14 +82383,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -82513,11 +82454,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -82529,13 +82470,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -82544,11 +82485,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -82568,11 +82509,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -82586,15 +82527,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -82603,11 +82544,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -82618,14 +82559,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -82638,7 +82579,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -82648,26 +82589,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -82695,27 +82636,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -82725,17 +82666,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -82744,7 +82685,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -83041,10 +82982,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -83055,29 +82999,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -83087,7 +83034,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -83119,9 +83066,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -83143,9 +83097,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -83166,34 +83127,41 @@ end local.get $ptr i32.load16_u - local.set $a|7 + local.set $a|9 local.get $ptr i32.load16_u offset=2 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store16 local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store16 offset=2 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -83205,14 +83173,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -83276,11 +83244,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -83292,13 +83260,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -83307,11 +83275,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -83331,11 +83299,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -83349,15 +83317,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -83366,11 +83334,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -83381,14 +83349,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -83401,7 +83369,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -83411,26 +83379,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -83458,27 +83426,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -83488,17 +83456,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -83507,7 +83475,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -83802,10 +83770,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -83816,29 +83787,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -83848,7 +83822,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -83880,9 +83854,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -83904,9 +83885,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -83927,34 +83915,41 @@ end local.get $ptr i32.load - local.set $a|7 + local.set $a|9 local.get $ptr i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -83966,14 +83961,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -84037,11 +84032,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -84053,13 +84048,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -84068,11 +84063,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84092,11 +84087,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -84110,15 +84105,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -84127,11 +84122,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84142,14 +84137,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -84162,7 +84157,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -84172,26 +84167,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -84219,27 +84214,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -84249,17 +84244,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -84268,7 +84263,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -84565,10 +84560,13 @@ (local $3 i32) (local $a i32) (local $b i32) + (local $6 i32) (local $c i32) - (local $a|7 i32) - (local $b|8 i32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i32) + (local $b|10 i32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -84579,29 +84577,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -84611,7 +84612,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -84643,9 +84644,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -84667,9 +84675,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -84690,34 +84705,41 @@ end local.get $ptr i32.load - local.set $a|7 + local.set $a|9 local.get $ptr i32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -84729,14 +84751,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -84800,11 +84822,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -84816,13 +84838,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -84831,11 +84853,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84855,11 +84877,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -84873,15 +84895,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -84890,11 +84912,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84905,14 +84927,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -84925,7 +84947,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -84935,26 +84957,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -84982,27 +85004,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -85012,17 +85034,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -85031,7 +85053,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -85326,10 +85348,13 @@ (local $3 i32) (local $a i64) (local $b i64) + (local $6 i32) (local $c i32) - (local $a|7 i64) - (local $b|8 i64) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i64) + (local $b|10 i64) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -85340,29 +85365,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -85372,7 +85400,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -85404,9 +85432,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -85428,9 +85463,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -85451,34 +85493,41 @@ end local.get $ptr i64.load - local.set $a|7 + local.set $a|9 local.get $ptr i64.load offset=8 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i64.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -85490,14 +85539,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -85561,11 +85610,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -85577,13 +85626,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -85592,11 +85641,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -85616,11 +85665,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -85634,15 +85683,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -85651,11 +85700,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -85666,14 +85715,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -85686,7 +85735,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -85696,26 +85745,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -85743,27 +85792,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -85773,17 +85822,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -85792,7 +85841,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -86089,10 +86138,13 @@ (local $3 i32) (local $a i64) (local $b i64) + (local $6 i32) (local $c i32) - (local $a|7 i64) - (local $b|8 i64) - (local $c|9 i32) + (local $8 i32) + (local $a|9 i64) + (local $b|10 i64) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -86103,29 +86155,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -86135,7 +86190,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -86167,9 +86222,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -86191,9 +86253,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -86214,34 +86283,41 @@ end local.get $ptr i64.load - local.set $a|7 + local.set $a|9 local.get $ptr i64.load offset=8 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select i64.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -86253,14 +86329,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -86324,11 +86400,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -86340,13 +86416,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -86355,11 +86431,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -86379,11 +86455,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -86397,15 +86473,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -86414,11 +86490,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -86429,14 +86505,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -86449,7 +86525,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -86459,26 +86535,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -86506,27 +86582,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -86536,17 +86612,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -86555,7 +86631,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -86850,10 +86926,13 @@ (local $3 i32) (local $a f32) (local $b f32) + (local $6 i32) (local $c i32) - (local $a|7 f32) - (local $b|8 f32) - (local $c|9 i32) + (local $8 i32) + (local $a|9 f32) + (local $b|10 f32) + (local $11 i32) + (local $c|12 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -86864,29 +86943,32 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $20 i32) - (local $21 i32) + (local $23 i32) + (local $24 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $27 i32) - (local $28 i32) + (local $30 i32) + (local $31 i32) (local $k i32) - (local $i|30 i32) + (local $i|33 i32) (local $start i32) - (local $i|32 i32) - (local $start|33 i32) - (local $34 i32) + (local $i|35 i32) + (local $start|36 i32) + (local $37 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $len i32.const 48 i32.le_s @@ -86896,7 +86978,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -86928,9 +87010,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $6 + i32.store + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 i32.load call_indirect (type $13) i32.const 0 @@ -86952,9 +87041,16 @@ local.set $b local.get $a local.get $b + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $8 + i32.store offset=4 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 i32.load call_indirect (type $13) i32.const 0 @@ -86975,34 +87071,41 @@ end local.get $ptr f32.load - local.set $a|7 + local.set $a|9 local.get $ptr f32.load offset=4 - local.set $b|8 - local.get $a|7 - local.get $b|8 + local.set $b|10 + local.get $a|9 + local.get $b|10 + global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator + local.tee $11 + i32.store offset=8 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 i32.load call_indirect (type $13) i32.const 0 i32.gt_s - local.set $c|9 + local.set $c|12 local.get $ptr - local.get $b|8 - local.get $a|7 - local.get $c|9 + local.get $b|10 + local.get $a|9 + local.get $c|12 select f32.store local.get $ptr - local.get $a|7 - local.get $b|8 - local.get $c|9 + local.get $a|9 + local.get $b|10 + local.get $c|12 select f32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -87014,14 +87117,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return @@ -87085,11 +87188,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -87101,13 +87204,13 @@ i32.lt_s if local.get $hi - local.tee $20 + local.tee $23 i32.const 32 i32.const 1 i32.sub - local.tee $21 - local.get $20 - local.get $21 + local.tee $24 + local.get $23 + local.get $24 i32.lt_s select local.set $endA @@ -87116,11 +87219,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -87140,11 +87243,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -87158,15 +87261,15 @@ i32.lt_s if local.get $hi - local.tee $27 + local.tee $30 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $28 - local.get $27 - local.get $28 + local.tee $31 + local.get $30 + local.get $31 i32.lt_s select local.set $endB @@ -87175,11 +87278,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/insertionSort end i32.const 0 @@ -87190,14 +87293,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|30 + local.set $i|33 loop $for-loop|3 - local.get $i|30 + local.get $i|33 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -87210,7 +87313,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add @@ -87220,26 +87323,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|30 + local.get $i|33 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|30 + local.get $i|33 i32.const 1 i32.sub - local.set $i|30 + local.set $i|33 br $for-loop|3 end end @@ -87267,27 +87370,27 @@ end end local.get $top - local.set $i|32 + local.set $i|35 loop $for-loop|4 - local.get $i|32 + local.get $i|35 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add i32.load - local.set $start|33 - local.get $start|33 + local.set $start|36 + local.get $start|36 i32.const -1 i32.ne if local.get $ptr - local.get $start|33 + local.get $start|36 local.get $leftRunEndBuf - local.get $i|32 + local.get $i|35 i32.const 2 i32.shl i32.add @@ -87297,17 +87400,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $34 + local.set $37 global.get $~lib/memory/__stack_pointer - local.get $34 - i32.store - local.get $34 + local.get $37 + i32.store offset=12 + local.get $37 call $~lib/util/sort/mergeRuns end - local.get $i|32 + local.get $i|35 i32.const 1 i32.sub - local.set $i|32 + local.set $i|35 br $for-loop|4 end end @@ -87316,7 +87419,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -92829,6 +92932,209 @@ i32.add global.set $~lib/memory/__stack_pointer ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp f64) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $12) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $12) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) (local $bufferSize i32) (local $buffer i32) @@ -93816,4 +94122,1831 @@ local.get $3 return ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i64) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp i64) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $5 i32) + (local $6 i32) + (local $k i32) + (local $tmp f32) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $i + local.get $right + i32.eq + if + local.get $i + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $5 + i32.store + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $6 + i32.store offset=4 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $13) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $comparator + local.tee $9 + i32.store offset=8 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $13) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) ) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index 8dd3afe263..9dd477c0b8 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -766,7 +766,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + block $__inlined_func$~lib/rt/itcms/Object#unlink$1433 local.get $0 i32.load offset=4 i32.const -4 @@ -790,7 +790,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 + br $__inlined_func$~lib/rt/itcms/Object#unlink$1433 end local.get $0 i32.load offset=8 @@ -2259,6 +2259,27 @@ (local $7 i32) (local $8 f64) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2278,26 +2299,32 @@ local.get $3 select i32.add - local.set $7 + local.set $3 loop $for-loop|0 local.get $2 - local.get $7 + local.get $3 i32.ge_s if local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 f64.load offset=8 local.tee $8 local.set $6 - local.get $3 + local.get $7 f64.load local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $5 local.get $8 local.get $4 @@ -2311,47 +2338,52 @@ local.get $8 local.set $5 end - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $7 loop $while-continue|1 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if local.get $9 local.get $8 f64.store offset=16 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add @@ -2359,194 +2391,62 @@ f64.store offset=16 loop $while-continue|2 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.le_s - br_if $while-break|2 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if local.get $9 local.get $5 f64.store offset=8 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|2 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add local.get $6 f64.store offset=8 - local.get $7 + local.get $3 i32.const 2 i32.add - local.set $7 + local.set $3 br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -2554,26 +2454,44 @@ (local $8 f64) (local $9 i32) (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $9 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 3 i32.shl local.tee $10 @@ -2588,28 +2506,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $9 - local.get $6 + local.get $2 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add f64.load offset=8 f64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -2619,14 +2537,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add f64.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add @@ -2634,6 +2552,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -2649,10 +2573,10 @@ i32.add local.get $7 f64.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -2661,10 +2585,10 @@ i32.add local.get $8 f64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -2673,6 +2597,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -5423,6 +5351,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -5451,17 +5400,23 @@ local.get $0 local.get $7 i32.add - local.tee $3 + local.tee $5 i32.load8_s offset=1 + local.set $3 + local.get $5 + i32.load8_s local.tee $6 local.set $5 - local.get $3 - i32.load8_s - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -5482,23 +5437,28 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store8 offset=2 @@ -5513,31 +5473,36 @@ local.get $0 local.get $6 i32.add - local.get $3 + local.get $5 i32.store8 offset=2 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.add + local.tee $5 + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store8 offset=1 local.get $6 @@ -5551,7 +5516,7 @@ local.get $0 local.get $6 i32.add - local.get $5 + local.get $3 i32.store8 offset=1 local.get $7 i32.const 2 @@ -5560,163 +5525,57 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (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.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.add - i32.load8_s - local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.get $0 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_s offset=1 - local.get $5 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_s offset=1 - local.get $1 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $7 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 local.get $4 i32.add local.get $0 - local.get $2 + local.get $6 i32.add i32.load8_s i32.store8 @@ -5724,24 +5583,24 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $7 - local.get $6 + local.get $2 i32.sub i32.add local.get $0 - local.get $6 + local.get $2 i32.add i32.load8_s offset=1 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -5750,18 +5609,24 @@ local.get $3 i32.le_s if + local.get $2 local.get $4 - local.get $6 i32.add i32.load8_s local.set $8 - local.get $2 local.get $4 + local.get $6 i32.add i32.load8_s local.set $7 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $8 local.get $7 local.get $5 @@ -5775,20 +5640,20 @@ i32.add local.get $8 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 i32.add local.get $7 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -5797,6 +5662,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -5824,6 +5693,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -5852,17 +5742,23 @@ local.get $0 local.get $7 i32.add - local.tee $3 + local.tee $5 i32.load8_u offset=1 + local.set $3 + local.get $5 + i32.load8_u local.tee $6 local.set $5 - local.get $3 - i32.load8_u - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -5883,23 +5779,28 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store8 offset=2 @@ -5914,31 +5815,36 @@ local.get $0 local.get $6 i32.add - local.get $3 + local.get $5 i32.store8 offset=2 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.add - local.tee $3 - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.add + local.tee $5 + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store8 offset=1 local.get $6 @@ -5952,7 +5858,7 @@ local.get $0 local.get $6 i32.add - local.get $5 + local.get $3 i32.store8 offset=1 local.get $7 i32.const 2 @@ -5961,188 +5867,82 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - local.get $1 - local.get $2 - i32.eq + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 + local.get $2 i32.const 1 + i32.sub + local.tee $2 i32.add - local.tee $4 - local.get $0 + local.set $7 + local.get $2 + i32.const 1 i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_u offset=1 - local.get $5 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + i32.add + local.get $0 + local.get $6 + i32.add + i32.load8_u + i32.store8 + br $for-loop|0 end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 + end + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $4 + local.get $7 local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_u offset=1 - local.get $1 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 i32.sub - local.tee $2 - local.get $4 i32.add local.get $0 local.get $2 i32.add - i32.load8_u - i32.store8 - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 - i32.sub - i32.add - local.get $0 - local.get $6 - i32.add i32.load8_u offset=1 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -6151,18 +5951,24 @@ local.get $3 i32.le_s if + local.get $2 local.get $4 - local.get $6 i32.add i32.load8_u local.set $8 - local.get $2 local.get $4 + local.get $6 i32.add i32.load8_u local.set $7 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $8 local.get $7 local.get $5 @@ -6176,20 +5982,20 @@ i32.add local.get $8 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 i32.add local.get $7 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -6198,6 +6004,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6235,6 +6045,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -6265,17 +6096,23 @@ i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load16_s offset=2 + local.set $3 + local.get $5 + i32.load16_s local.tee $6 local.set $5 - local.get $3 - i32.load16_s - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -6296,25 +6133,30 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store16 offset=4 @@ -6331,33 +6173,38 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $5 i32.store16 offset=4 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store16 offset=2 local.get $6 @@ -6373,7 +6220,7 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $3 i32.store16 offset=2 local.get $7 i32.const 2 @@ -6382,171 +6229,53 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (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.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_s offset=2 - local.get $5 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_s offset=2 - local.get $1 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $7 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 1 i32.shl local.tee $8 @@ -6561,28 +6290,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $7 - local.get $6 + local.get $2 i32.sub i32.const 1 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add i32.load16_s offset=2 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -6592,14 +6321,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add i32.load16_s local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add @@ -6607,6 +6336,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -6622,10 +6357,10 @@ i32.add local.get $7 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -6634,10 +6369,10 @@ i32.add local.get $8 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -6646,6 +6381,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6673,6 +6412,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -6703,17 +6463,23 @@ i32.const 1 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load16_u offset=2 + local.set $3 + local.get $5 + i32.load16_u local.tee $6 local.set $5 - local.get $3 - i32.load16_u - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -6734,28 +6500,33 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $8 - local.get $9 - i32.store16 offset=4 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + local.get $8 + local.get $9 + i32.store16 offset=4 local.get $6 i32.const 1 i32.sub @@ -6769,33 +6540,38 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $5 i32.store16 offset=4 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store16 offset=2 local.get $6 @@ -6811,7 +6587,7 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $3 i32.store16 offset=2 local.get $7 i32.const 2 @@ -6820,171 +6596,53 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (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.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u offset=2 - local.get $5 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u offset=2 - local.get $1 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $7 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 1 i32.shl local.tee $8 @@ -6999,28 +6657,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $7 - local.get $6 + local.get $2 i32.sub i32.const 1 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add i32.load16_u offset=2 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -7030,14 +6688,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add i32.load16_u local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add @@ -7045,6 +6703,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -7060,10 +6724,10 @@ i32.add local.get $7 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -7072,10 +6736,10 @@ i32.add local.get $8 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -7084,6 +6748,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -7121,6 +6789,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -7151,17 +6840,23 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load offset=4 + local.set $3 + local.get $5 + i32.load local.tee $6 local.set $5 - local.get $3 - i32.load - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -7182,25 +6877,30 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store offset=8 @@ -7217,33 +6917,38 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -7259,7 +6964,7 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=4 local.get $7 i32.const 2 @@ -7268,207 +6973,89 @@ br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) - local.get $1 - local.get $2 - i32.eq + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 + local.get $2 i32.const 1 + i32.sub + local.tee $2 i32.add - local.tee $4 - i32.const 2 - i32.shl + local.set $7 + local.get $2 + i32.const 1 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 2 + i32.shl + local.tee $8 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 + end + loop $for-loop|1 + local.get $2 + local.get $3 + i32.lt_s + if + local.get $4 + local.get $7 local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $7 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $3 - local.get $6 - i32.gt_s - if - local.get $4 - local.get $7 - local.get $6 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -7478,14 +7065,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add @@ -7493,6 +7080,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -7508,10 +7101,10 @@ i32.add local.get $7 i32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -7520,10 +7113,10 @@ i32.add local.get $8 i32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -7532,6 +7125,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -7553,6 +7150,27 @@ (local $7 i32) (local $8 i32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -7583,17 +7201,23 @@ i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $5 i32.load offset=4 + local.set $3 + local.get $5 + i32.load local.tee $6 local.set $5 - local.get $3 - i32.load - local.set $3 i32.const 2 global.set $~argumentsLength - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $6 + local.get $3 local.get $4 i32.load call_indirect (type $0) @@ -7614,25 +7238,30 @@ local.get $6 i32.le_s if - block $while-break|1 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - local.get $9 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $9 + local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $8 local.get $9 i32.store offset=8 @@ -7649,33 +7278,38 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - block $while-break|2 - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.le_s - br_if $while-break|2 - local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -7691,7 +7325,7 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=4 local.get $7 i32.const 2 @@ -7700,171 +7334,53 @@ br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (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.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $7 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 2 i32.shl local.tee $8 @@ -7879,28 +7395,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $7 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -7910,14 +7426,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add @@ -7925,6 +7441,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -7940,10 +7462,10 @@ i32.add local.get $7 i32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -7952,10 +7474,10 @@ i32.add local.get $8 i32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -7964,6 +7486,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -7989,6 +7515,27 @@ (local $7 i32) (local $8 i64) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -8008,26 +7555,32 @@ local.get $3 select i32.add - local.set $7 + local.set $3 loop $for-loop|0 local.get $2 - local.get $7 + local.get $3 i32.ge_s if local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 i64.load offset=8 local.tee $8 local.set $6 - local.get $3 + local.get $7 i64.load local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $5 local.get $8 local.get $4 @@ -8041,47 +7594,52 @@ local.get $8 local.set $5 end - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $7 loop $while-continue|1 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|1 - local.get $9 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + local.get $9 local.get $8 i64.store offset=16 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add @@ -8089,194 +7647,62 @@ i64.store offset=16 loop $while-continue|2 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if local.get $9 local.get $5 i64.store offset=8 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|2 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add local.get $6 i64.store offset=8 - local.get $7 + local.get $3 i32.const 2 i32.add - local.set $7 + local.set $3 br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -8284,26 +7710,44 @@ (local $8 i64) (local $9 i32) (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $9 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 3 i32.shl local.tee $10 @@ -8318,28 +7762,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $9 - local.get $6 + local.get $2 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add i64.load offset=8 i64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -8349,14 +7793,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add i64.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add @@ -8364,6 +7808,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -8379,10 +7829,10 @@ i32.add local.get $7 i64.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -8391,10 +7841,10 @@ i32.add local.get $8 i64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -8403,6 +7853,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -8428,6 +7882,27 @@ (local $7 i32) (local $8 i64) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -8447,26 +7922,32 @@ local.get $3 select i32.add - local.set $7 + local.set $3 loop $for-loop|0 local.get $2 - local.get $7 + local.get $3 i32.ge_s if local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add - local.tee $3 + local.tee $7 i64.load offset=8 local.tee $8 local.set $6 - local.get $3 + local.get $7 i64.load local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $5 local.get $8 local.get $4 @@ -8480,47 +7961,52 @@ local.get $8 local.set $5 end - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $7 loop $while-continue|1 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if local.get $9 local.get $8 i64.store offset=16 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add @@ -8528,257 +8014,143 @@ i64.store offset=16 loop $while-continue|2 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.le_s - br_if $while-break|2 + local.get $0 + local.get $7 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if local.get $9 local.get $5 i64.store offset=8 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|2 end end end local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add local.get $6 i64.store offset=8 - local.get $7 + local.get $3 i32.const 2 i32.add - local.set $7 + local.set $3 br $for-loop|0 end end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i64) - local.get $1 - local.get $2 - i32.eq + (local $8 i64) + (local $9 i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s if - local.get $1 - return + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 + local.get $2 i32.const 1 + i32.sub + local.tee $2 i32.add - local.tee $4 - i32.const 3 - i32.shl + local.set $9 + local.get $2 + i32.const 1 i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 + local.set $6 + loop $for-loop|0 + local.get $1 + local.get $6 + i32.lt_s + if + local.get $6 + i32.const 1 + i32.sub + local.tee $6 + i32.const 3 + i32.shl + local.tee $10 local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 - ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) - (local $6 i32) - (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - local.get $2 - i32.const 1 - i32.sub - local.tee $6 - local.get $3 - i32.add - local.set $9 - local.get $6 - i32.const 1 - i32.add - local.set $2 - loop $for-loop|0 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $9 - local.get $6 + local.get $2 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add i64.load offset=8 i64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -8788,14 +8160,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add i64.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add @@ -8803,6 +8175,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -8818,10 +8196,10 @@ i32.add local.get $7 i64.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -8830,10 +8208,10 @@ i32.add local.get $8 i64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -8842,6 +8220,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -8867,6 +8249,27 @@ (local $7 i32) (local $8 f32) (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -8886,26 +8289,32 @@ local.get $3 select i32.add - local.set $7 + local.set $3 loop $for-loop|0 local.get $2 - local.get $7 + local.get $3 i32.ge_s if local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add - local.tee $3 + local.tee $7 f32.load offset=4 local.tee $8 local.set $6 - local.get $3 + local.get $7 f32.load local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + drop local.get $5 local.get $8 local.get $4 @@ -8919,47 +8328,52 @@ local.get $8 local.set $5 end - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $3 + local.set $7 loop $while-continue|1 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|1 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $11) - i32.const 0 - i32.le_s - br_if $while-break|1 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + drop + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if local.get $9 local.get $8 f32.store offset=8 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|1 end end end local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add @@ -8967,194 +8381,62 @@ f32.store offset=8 loop $while-continue|2 local.get $1 - local.get $3 + local.get $7 i32.le_s if - block $while-break|2 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $11) - i32.const 0 - i32.le_s - br_if $while-break|2 + local.get $0 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + drop + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if local.get $9 local.get $5 f32.store offset=4 - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $3 + local.set $7 br $while-continue|2 end end end local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add local.get $6 f32.store offset=4 - local.get $7 + local.get $3 i32.const 2 i32.add - local.set $7 + local.set $3 br $for-loop|0 end end - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - local.get $1 - local.get $2 - i32.eq - if - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - local.get $4 + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -9162,26 +8444,44 @@ (local $8 f32) (local $9 i32) (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $6 - local.get $3 + local.tee $2 i32.add local.set $9 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $2 + local.set $6 loop $for-loop|0 local.get $1 - local.get $2 + local.get $6 i32.lt_s if - local.get $2 + local.get $6 i32.const 1 i32.sub - local.tee $2 + local.tee $6 i32.const 2 i32.shl local.tee $10 @@ -9196,28 +8496,28 @@ end end loop $for-loop|1 + local.get $2 local.get $3 - local.get $6 - i32.gt_s + i32.lt_s if local.get $4 local.get $9 - local.get $6 + local.get $2 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add f32.load offset=4 f32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 br $for-loop|1 end end @@ -9227,14 +8527,14 @@ i32.le_s if local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add f32.load local.set $7 local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add @@ -9242,6 +8542,12 @@ local.set $8 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + i32.load offset=4 + drop local.get $7 local.get $8 local.get $5 @@ -9257,10 +8563,10 @@ i32.add local.get $7 f32.store - local.get $6 + local.get $2 i32.const 1 i32.sub - local.set $6 + local.set $2 else local.get $0 local.get $1 @@ -9269,10 +8575,10 @@ i32.add local.get $8 f32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 end local.get $1 i32.const 1 @@ -9281,6 +8587,10 @@ br $for-loop|2 end end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -11125,7 +10435,7 @@ (local $17 f64) (local $18 f64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11140,8 +10450,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -11171,6 +10484,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -11189,6 +10508,12 @@ local.set $18 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $18 local.get $9 @@ -11221,6 +10546,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -11244,7 +10575,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11314,7 +10645,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -11332,7 +10663,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -11357,7 +10688,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -11377,7 +10708,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $10 @@ -11446,7 +10777,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -11512,7 +10843,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -11533,13 +10864,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -12342,7 +11673,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$202 + block $__inlined_func$~lib/util/bytes/FILL$222 local.get $1 i32.eqz local.get $1 @@ -12367,7 +11698,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$202 + br $__inlined_func$~lib/util/bytes/FILL$222 end loop $for-loop|0 local.get $0 @@ -12969,7 +12300,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12987,8 +12318,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -13022,6 +12353,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $3 local.get $6 local.get $2 @@ -13038,7 +12375,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -14024,7 +13361,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14042,8 +13379,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -14079,6 +13416,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $3 local.get $5 local.get $2 @@ -14095,7 +13438,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -14158,7 +13501,7 @@ i32.const 3600 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14167,7 +13510,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14214,6 +13557,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3600 + i32.store offset=20 + i32.const 3604 + i32.load + drop local.get $2 local.get $3 i32.add @@ -14244,7 +13593,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14415,7 +13764,7 @@ i32.const 3632 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14424,7 +13773,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14471,6 +13820,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3632 + i32.store offset=20 + i32.const 3636 + i32.load + drop local.get $2 local.get $3 i32.add @@ -14501,7 +13856,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14625,7 +13980,7 @@ i32.const 3664 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14634,7 +13989,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14681,6 +14036,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3664 + i32.store offset=20 + i32.const 3668 + i32.load + drop local.get $2 local.get $3 i32.add @@ -14711,7 +14072,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14888,7 +14249,7 @@ i32.const 3696 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14897,7 +14258,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14950,6 +14311,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3696 + i32.store offset=20 + i32.const 3700 + i32.load + drop local.get $2 local.get $8 i32.add @@ -14980,7 +14347,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15157,7 +14524,7 @@ i32.const 3728 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15166,7 +14533,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15219,6 +14586,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3728 + i32.store offset=20 + i32.const 3732 + i32.load + drop local.get $2 local.get $8 i32.add @@ -15249,7 +14622,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15375,7 +14748,7 @@ i32.const 3760 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15384,7 +14757,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15437,6 +14810,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3760 + i32.store offset=20 + i32.const 3764 + i32.load + drop local.get $2 local.get $8 i32.add @@ -15467,7 +14846,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15644,7 +15023,7 @@ i32.const 3792 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15653,7 +15032,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15706,6 +15085,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3792 + i32.store offset=20 + i32.const 3796 + i32.load + drop local.get $2 local.get $8 i32.add @@ -15736,7 +15121,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15914,7 +15299,7 @@ i32.const 3824 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15923,7 +15308,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15976,6 +15361,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3824 + i32.store offset=20 + i32.const 3828 + i32.load + drop local.get $2 local.get $8 i32.add @@ -16006,7 +15397,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16184,7 +15575,7 @@ i32.const 3856 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16193,7 +15584,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -16246,6 +15637,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3856 + i32.store offset=20 + i32.const 3860 + i32.load + drop local.get $2 local.get $8 i32.add @@ -16276,7 +15673,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16454,7 +15851,7 @@ i32.const 3888 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16463,7 +15860,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -16516,6 +15913,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3888 + i32.store offset=20 + i32.const 3892 + i32.load + drop local.get $2 local.get $8 i32.add @@ -16546,7 +15949,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16672,7 +16075,7 @@ i32.const 3920 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16681,7 +16084,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -16734,6 +16137,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3920 + i32.store offset=20 + i32.const 3924 + i32.load + drop local.get $2 local.get $8 i32.add @@ -16764,7 +16173,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16903,7 +16312,7 @@ i32.const 3952 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16912,7 +16321,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -16959,6 +16368,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3952 + i32.store offset=20 + i32.const 3956 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -16999,7 +16414,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17166,7 +16581,7 @@ i32.const 3984 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17175,7 +16590,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17222,6 +16637,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3984 + i32.store offset=20 + i32.const 3988 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -17262,7 +16683,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17429,7 +16850,7 @@ i32.const 4016 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17438,7 +16859,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17485,6 +16906,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4016 + i32.store offset=20 + i32.const 4020 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -17525,7 +16952,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17692,7 +17119,7 @@ i32.const 4048 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17701,7 +17128,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17752,6 +17179,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4048 + i32.store offset=20 + i32.const 4052 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -17797,7 +17230,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17964,7 +17397,7 @@ i32.const 4080 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17973,7 +17406,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18024,6 +17457,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4080 + i32.store offset=20 + i32.const 4084 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -18069,7 +17508,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18236,7 +17675,7 @@ i32.const 4112 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18245,7 +17684,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18296,6 +17735,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4112 + i32.store offset=20 + i32.const 4116 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -18341,7 +17786,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18508,7 +17953,7 @@ i32.const 4144 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18517,7 +17962,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18568,6 +18013,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4144 + i32.store offset=20 + i32.const 4148 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -18613,7 +18064,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18780,7 +18231,7 @@ i32.const 4176 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18789,7 +18240,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18840,6 +18291,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4176 + i32.store offset=20 + i32.const 4180 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -18885,7 +18342,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19052,7 +18509,7 @@ i32.const 4208 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19061,7 +18518,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -19112,6 +18569,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4208 + i32.store offset=20 + i32.const 4212 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -19157,7 +18620,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19324,7 +18787,7 @@ i32.const 4240 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19333,7 +18796,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -19384,6 +18847,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4240 + i32.store offset=20 + i32.const 4244 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -19429,7 +18898,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19596,7 +19065,7 @@ i32.const 4272 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19605,7 +19074,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 + i32.const 24 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -19656,6 +19125,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 4272 + i32.store offset=20 + i32.const 4276 + i32.load + drop local.get $5 local.get $2 local.get $8 @@ -19701,7 +19176,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19801,7 +19276,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19819,8 +19294,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19855,6 +19330,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -19874,7 +19355,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19884,7 +19365,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19902,8 +19383,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19938,6 +19419,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -19957,7 +19444,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19967,7 +19454,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19985,8 +19472,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20023,6 +19510,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20042,7 +19535,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20052,7 +19545,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20070,8 +19563,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20108,6 +19601,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20127,7 +19626,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20137,7 +19636,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20155,8 +19654,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20193,6 +19692,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20212,7 +19717,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20222,7 +19727,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20240,8 +19745,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20278,6 +19783,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20297,7 +19808,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20307,7 +19818,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20325,8 +19836,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20363,6 +19874,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20382,7 +19899,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20392,7 +19909,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20410,8 +19927,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20448,6 +19965,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20467,7 +19990,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20477,7 +20000,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20495,8 +20018,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20533,6 +20056,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20552,7 +20081,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20562,7 +20091,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20580,8 +20109,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20618,6 +20147,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 1 local.get $5 local.get $2 @@ -20637,7 +20172,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20647,7 +20182,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20665,8 +20200,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20700,6 +20235,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -20717,7 +20258,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20728,7 +20269,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20746,8 +20287,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20781,6 +20322,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -20798,7 +20345,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20809,7 +20356,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20827,8 +20374,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20864,6 +20411,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -20881,7 +20434,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20892,7 +20445,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20910,8 +20463,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20947,6 +20500,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -20964,7 +20523,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20975,7 +20534,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20993,8 +20552,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21030,6 +20589,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21047,7 +20612,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21058,7 +20623,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21076,8 +20641,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21113,6 +20678,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21130,7 +20701,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21141,7 +20712,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21159,8 +20730,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21196,6 +20767,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21213,7 +20790,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21224,7 +20801,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21242,8 +20819,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21279,6 +20856,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21296,7 +20879,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21307,7 +20890,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21325,8 +20908,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21362,6 +20945,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21379,7 +20968,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21390,7 +20979,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21408,8 +20997,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21445,6 +21034,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21462,7 +21057,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21472,7 +21067,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21490,8 +21085,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21527,6 +21122,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21544,7 +21145,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21554,7 +21155,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21572,8 +21173,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21609,6 +21210,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21626,7 +21233,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21636,7 +21243,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21654,8 +21261,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21693,6 +21300,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21710,7 +21323,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21720,7 +21333,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21738,8 +21351,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21777,6 +21390,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21794,7 +21413,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21804,7 +21423,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21822,8 +21441,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21861,6 +21480,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21878,7 +21503,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21888,7 +21513,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21906,8 +21531,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21945,6 +21570,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -21962,7 +21593,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21972,7 +21603,7 @@ (local $3 i32) (local $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21990,8 +21621,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -22029,6 +21660,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -22046,7 +21683,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -22056,7 +21693,7 @@ (local $3 i32) (local $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22074,8 +21711,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -22113,6 +21750,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -22130,7 +21773,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -22140,7 +21783,7 @@ (local $3 i32) (local $4 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22158,8 +21801,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -22197,6 +21840,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -22214,7 +21863,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -22224,7 +21873,7 @@ (local $3 i32) (local $4 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22242,8 +21891,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -22281,6 +21930,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -22298,7 +21953,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -22309,7 +21964,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22327,8 +21982,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22363,6 +22018,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22383,7 +22044,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22393,7 +22054,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22411,8 +22072,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22447,6 +22108,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22467,7 +22134,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22477,7 +22144,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22495,8 +22162,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22533,6 +22200,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22553,7 +22226,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22563,7 +22236,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22581,8 +22254,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22619,6 +22292,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22639,7 +22318,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22649,7 +22328,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22667,8 +22346,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22705,6 +22384,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22725,7 +22410,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22735,7 +22420,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22753,8 +22438,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22791,6 +22476,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22811,7 +22502,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22821,7 +22512,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22839,8 +22530,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22877,6 +22568,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22897,7 +22594,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22907,7 +22604,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22925,8 +22622,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22963,6 +22660,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -22983,7 +22686,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22993,7 +22696,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23011,8 +22714,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -23049,6 +22752,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -23069,7 +22778,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -23079,7 +22788,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23097,8 +22806,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -23135,6 +22844,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop i32.const 0 local.get $5 local.get $2 @@ -23155,7 +22870,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -23235,7 +22950,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -23253,8 +22968,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -23287,6 +23002,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + drop local.get $2 local.get $0 local.get $1 @@ -23300,7 +23021,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -35306,7 +35027,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1408 + block $__inlined_func$~lib/util/string/joinIntegerArray$1438 local.get $0 i32.const 1 i32.sub @@ -35320,7 +35041,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1438 end local.get $6 i32.eqz @@ -35333,7 +35054,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1438 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35426,7 +35147,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1408 + br $__inlined_func$~lib/util/string/joinIntegerArray$1438 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35560,7 +35281,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$714 + block $__inlined_func$~lib/util/string/compareImpl$734 loop $while-continue|1 local.get $0 local.tee $3 @@ -35580,7 +35301,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$714 + br_if $__inlined_func$~lib/util/string/compareImpl$734 local.get $2 i32.const 2 i32.add @@ -35654,7 +35375,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1409 + block $__inlined_func$~lib/util/string/joinIntegerArray$1439 local.get $0 i32.const 1 i32.sub @@ -35668,7 +35389,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1439 end local.get $6 i32.eqz @@ -35681,7 +35402,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1439 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35774,7 +35495,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1409 + br $__inlined_func$~lib/util/string/joinIntegerArray$1439 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35869,7 +35590,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1410 + block $__inlined_func$~lib/util/string/joinIntegerArray$1440 local.get $0 i32.const 1 i32.sub @@ -35883,7 +35604,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1440 end local.get $6 i32.eqz @@ -35896,7 +35617,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1440 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35993,7 +35714,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1410 + br $__inlined_func$~lib/util/string/joinIntegerArray$1440 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36059,7 +35780,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1411 + block $__inlined_func$~lib/util/string/joinIntegerArray$1441 local.get $0 i32.const 1 i32.sub @@ -36073,7 +35794,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1441 end local.get $6 i32.eqz @@ -36086,7 +35807,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1441 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -36183,7 +35904,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1411 + br $__inlined_func$~lib/util/string/joinIntegerArray$1441 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36249,7 +35970,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1412 + block $__inlined_func$~lib/util/string/joinIntegerArray$1442 local.get $0 i32.const 1 i32.sub @@ -36263,7 +35984,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1442 end local.get $6 i32.eqz @@ -36276,7 +35997,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1442 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -36373,7 +36094,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1412 + br $__inlined_func$~lib/util/string/joinIntegerArray$1442 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36439,7 +36160,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1413 + block $__inlined_func$~lib/util/string/joinIntegerArray$1443 local.get $0 i32.const 1 i32.sub @@ -36453,7 +36174,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1443 end local.get $6 i32.eqz @@ -36466,7 +36187,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1443 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -36563,7 +36284,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1413 + br $__inlined_func$~lib/util/string/joinIntegerArray$1443 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -37008,7 +36729,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$749 + block $__inlined_func$~lib/util/number/utoa64$769 local.get $3 i64.eqz if @@ -37018,7 +36739,7 @@ global.set $~lib/memory/__stack_pointer i32.const 8000 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$749 + br $__inlined_func$~lib/util/number/utoa64$769 end local.get $3 i64.const 4294967295 @@ -49225,7 +48946,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49240,8 +48961,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -49271,6 +48995,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -49289,6 +49019,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -49321,6 +49057,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -49344,7 +49086,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -49412,7 +49154,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -49430,7 +49172,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -49455,7 +49197,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -49475,7 +49217,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -49544,7 +49286,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -49610,7 +49352,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -49631,13 +49373,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -49698,7 +49440,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49713,8 +49455,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -49744,6 +49489,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -49762,6 +49513,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -49794,6 +49551,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -49817,7 +49580,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -49885,7 +49648,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -49903,7 +49666,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -49928,7 +49691,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -49948,7 +49711,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -50017,7 +49780,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -50083,7 +49846,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -50104,13 +49867,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -50171,7 +49934,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50186,8 +49949,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -50217,6 +49983,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -50235,6 +50007,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -50267,6 +50045,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -50290,7 +50074,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -50360,7 +50144,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -50378,7 +50162,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -50403,7 +50187,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -50423,7 +50207,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -50492,7 +50276,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -50558,7 +50342,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -50579,13 +50363,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -50646,7 +50430,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50661,8 +50445,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -50692,6 +50479,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -50710,6 +50503,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -50742,6 +50541,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -50765,7 +50570,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -50835,7 +50640,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -50853,7 +50658,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -50878,7 +50683,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -50898,7 +50703,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -50967,7 +50772,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -51033,7 +50838,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -51054,13 +50859,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -51121,7 +50926,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -51136,8 +50941,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -51167,6 +50975,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -51185,6 +50999,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -51217,6 +51037,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -51240,7 +51066,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -51310,7 +51136,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -51328,7 +51154,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -51353,7 +51179,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -51373,7 +51199,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -51442,7 +51268,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -51508,7 +51334,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -51529,13 +51355,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -51596,7 +51422,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -51611,8 +51437,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -51642,6 +51471,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -51660,6 +51495,12 @@ local.set $5 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $5 local.get $1 @@ -51692,6 +51533,12 @@ local.set $3 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $3 local.get $1 @@ -51715,7 +51562,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -51785,7 +51632,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -51803,7 +51650,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -51828,7 +51675,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -51848,7 +51695,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $9 @@ -51917,7 +51764,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -51983,7 +51830,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -52004,13 +51851,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -52073,7 +51920,7 @@ (local $16 i64) (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -52088,8 +51935,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -52119,6 +51969,12 @@ local.set $16 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $16 local.get $9 @@ -52137,6 +51993,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -52169,6 +52031,12 @@ local.set $16 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $16 local.get $9 @@ -52192,7 +52060,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -52262,7 +52130,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -52280,7 +52148,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -52305,7 +52173,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -52325,7 +52193,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $10 @@ -52394,7 +52262,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -52460,7 +52328,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -52481,13 +52349,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -52550,7 +52418,7 @@ (local $16 i64) (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -52565,8 +52433,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -52596,6 +52467,12 @@ local.set $16 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $16 local.get $9 @@ -52614,6 +52491,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -52646,6 +52529,12 @@ local.set $16 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $16 local.get $9 @@ -52669,7 +52558,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -52739,7 +52628,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -52757,7 +52646,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -52782,7 +52671,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -52802,7 +52691,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $10 @@ -52871,7 +52760,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -52937,7 +52826,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -52958,13 +52847,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -53028,7 +52917,7 @@ (local $17 f32) (local $18 f32) global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -53043,8 +52932,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 block $folding-inner0 local.get $1 i32.const 48 @@ -53074,6 +52966,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -53092,6 +52990,12 @@ local.set $18 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $18 local.get $9 @@ -53124,6 +53028,12 @@ local.set $17 i32.const 2 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + drop local.get $0 local.get $17 local.get $9 @@ -53147,7 +53057,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -53217,7 +53127,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 local.get $1 @@ -53235,7 +53145,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 i32.const 0 i32.const 31 @@ -53260,7 +53170,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 i32.const 1 @@ -53280,7 +53190,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $6 local.get $10 @@ -53349,7 +53259,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $8 local.get $3 @@ -53415,7 +53325,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store + i32.store offset=12 local.get $0 local.get $4 local.get $3 @@ -53436,13 +53346,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 4 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -55835,7 +55745,7 @@ i32.const 2896 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -55846,8 +55756,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -55881,6 +55791,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2896 + i32.store offset=12 + i32.const 2900 + i32.load + drop local.get $1 local.get $9 local.get $0 @@ -55897,7 +55813,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56075,7 +55991,7 @@ i32.const 2992 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56086,8 +56002,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56125,6 +56041,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 2992 + i32.store offset=12 + i32.const 2996 + i32.load + drop local.get $1 local.get $9 local.get $0 @@ -56141,7 +56063,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56203,7 +56125,7 @@ i32.const 3024 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56214,8 +56136,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56253,6 +56175,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3024 + i32.store offset=12 + i32.const 3028 + i32.load + drop local.get $1 local.get $9 local.get $0 @@ -56269,7 +56197,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56331,7 +56259,7 @@ i32.const 3056 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56342,8 +56270,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56381,6 +56309,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3056 + i32.store offset=12 + i32.const 3060 + i32.load + drop local.get $1 local.get $9 local.get $0 @@ -56397,7 +56331,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56457,7 +56391,7 @@ i32.const 3088 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56468,8 +56402,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56507,6 +56441,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3088 + i32.store offset=12 + i32.const 3092 + i32.load + drop local.get $1 local.get $9 local.get $0 @@ -56523,7 +56463,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56583,7 +56523,7 @@ i32.const 3120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56594,8 +56534,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56631,6 +56571,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3120 + i32.store offset=12 + i32.const 3124 + i32.load + drop local.get $3 local.get $10 local.get $0 @@ -56647,7 +56593,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -56709,7 +56655,7 @@ i32.const 3152 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56720,8 +56666,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56757,6 +56703,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3152 + i32.store offset=12 + i32.const 3156 + i32.load + drop local.get $3 local.get $10 local.get $0 @@ -56773,7 +56725,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -56833,7 +56785,7 @@ i32.const 3184 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56844,8 +56796,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56881,6 +56833,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3184 + i32.store offset=12 + i32.const 3188 + i32.load + drop local.get $4 local.get $11 local.get $0 @@ -56897,7 +56855,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -56957,7 +56915,7 @@ i32.const 3216 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56968,8 +56926,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -57005,6 +56963,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3216 + i32.store offset=12 + i32.const 3220 + i32.load + drop local.get $5 local.get $12 local.get $0 @@ -57021,7 +56985,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $5 @@ -57827,7 +57791,7 @@ i32.const 3248 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -57838,8 +57802,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -57877,6 +57841,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3248 + i32.store offset=12 + i32.const 3252 + i32.load + drop local.get $1 local.get $8 local.get $0 @@ -57893,7 +57863,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58069,7 +58039,7 @@ i32.const 3344 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58080,8 +58050,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58121,6 +58091,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3344 + i32.store offset=12 + i32.const 3348 + i32.load + drop local.get $1 local.get $8 local.get $0 @@ -58137,7 +58113,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58197,7 +58173,7 @@ i32.const 3376 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58208,8 +58184,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58249,6 +58225,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3376 + i32.store offset=12 + i32.const 3380 + i32.load + drop local.get $1 local.get $8 local.get $0 @@ -58265,7 +58247,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58325,7 +58307,7 @@ i32.const 3408 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58336,8 +58318,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58377,6 +58359,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3408 + i32.store offset=12 + i32.const 3412 + i32.load + drop local.get $1 local.get $8 local.get $0 @@ -58393,7 +58381,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58451,7 +58439,7 @@ i32.const 3440 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58462,8 +58450,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58503,6 +58491,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3440 + i32.store offset=12 + i32.const 3444 + i32.load + drop local.get $1 local.get $8 local.get $0 @@ -58519,7 +58513,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58579,7 +58573,7 @@ i32.const 3472 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58590,8 +58584,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58629,6 +58623,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3472 + i32.store offset=12 + i32.const 3476 + i32.load + drop local.get $3 local.get $10 local.get $0 @@ -58645,7 +58645,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -58705,7 +58705,7 @@ i32.const 3504 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58716,8 +58716,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58755,6 +58755,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3504 + i32.store offset=12 + i32.const 3508 + i32.load + drop local.get $3 local.get $10 local.get $0 @@ -58771,7 +58777,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -58831,7 +58837,7 @@ i32.const 3536 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58842,8 +58848,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58881,6 +58887,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3536 + i32.store offset=12 + i32.const 3540 + i32.load + drop local.get $4 local.get $11 local.get $0 @@ -58897,7 +58909,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -58957,7 +58969,7 @@ i32.const 3568 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58968,8 +58980,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -59007,6 +59019,12 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 3568 + i32.store offset=12 + i32.const 3572 + i32.load + drop local.get $5 local.get $12 local.get $0 @@ -59023,7 +59041,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $5 @@ -62053,7 +62071,7 @@ i32.const 7200 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62064,8 +62082,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62098,6 +62116,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7200 + i32.store offset=12 + i32.const 7204 + i32.load + drop local.get $0 local.get $1 i32.const 7200 @@ -62111,7 +62135,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62357,7 +62381,7 @@ i32.const 7296 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62368,8 +62392,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62404,6 +62428,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7296 + i32.store offset=12 + i32.const 7300 + i32.load + drop local.get $0 local.get $1 i32.const 7296 @@ -62417,7 +62447,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62502,7 +62532,7 @@ i32.const 7328 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62513,8 +62543,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62549,6 +62579,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7328 + i32.store offset=12 + i32.const 7332 + i32.load + drop local.get $0 local.get $1 i32.const 7328 @@ -62562,7 +62598,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62641,7 +62677,7 @@ i32.const 7360 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62652,8 +62688,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62688,6 +62724,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7360 + i32.store offset=12 + i32.const 7364 + i32.load + drop local.get $0 local.get $1 i32.const 7360 @@ -62701,7 +62743,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62780,7 +62822,7 @@ i32.const 7392 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62791,8 +62833,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62827,6 +62869,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7392 + i32.store offset=12 + i32.const 7396 + i32.load + drop local.get $0 local.get $1 i32.const 7392 @@ -62840,7 +62888,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62922,7 +62970,7 @@ i32.const 7424 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62933,8 +62981,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62969,6 +63017,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7424 + i32.store offset=12 + i32.const 7428 + i32.load + drop local.get $0 local.get $1 i32.const 7424 @@ -62982,7 +63036,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63064,7 +63118,7 @@ i32.const 7456 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63075,8 +63129,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63111,6 +63165,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7456 + i32.store offset=12 + i32.const 7460 + i32.load + drop local.get $0 local.get $1 i32.const 7456 @@ -63124,7 +63184,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63206,7 +63266,7 @@ i32.const 7488 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63217,8 +63277,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63253,6 +63313,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7488 + i32.store offset=12 + i32.const 7492 + i32.load + drop local.get $0 local.get $1 i32.const 7488 @@ -63266,7 +63332,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63348,7 +63414,7 @@ i32.const 7520 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63359,8 +63425,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63395,6 +63461,12 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + i32.const 7520 + i32.store offset=12 + i32.const 7524 + i32.load + drop local.get $0 local.get $1 i32.const 7520 @@ -63408,7 +63480,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -67803,6 +67875,194 @@ call $~lib/builtins/abort unreachable ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $10) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -68119,4 +68379,1666 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_s + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $0 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.add + i32.load8_u + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $0 + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 16320 + i32.lt_s + if + i32.const 49120 + i32.const 49168 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $1 + local.get $2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + f32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $11) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + drop + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) ) From 99edd36c9d1e4092fdb2e7c13049b301d0d114d4 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:23:19 -0500 Subject: [PATCH 04/13] Handle function expressions in 'new' constructor args Adds logic to prescan constructor arguments of 'new' expressions for function expressions. This ensures that any function expressions passed as arguments are properly processed during compilation. --- src/compiler.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/compiler.ts b/src/compiler.ts index a8a0396dc0..71ffeba689 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -8037,6 +8037,15 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.New: { + let newExpr = node; + // Scan constructor arguments for function expressions + let args = newExpr.args; + for (let i = 0, k = args.length; i < k; i++) { + this.prescanNodeForFunctionExpressions(args[i], instance, flow, declaredVars); + } + break; + } case NodeKind.Parenthesized: { let paren = node; this.prescanNodeForFunctionExpressions(paren.expression, instance, flow, declaredVars); From b085c6a15cca4054e3f4e1916075da4d3b843285 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:30:23 -0500 Subject: [PATCH 05/13] Add closure class compiler tests Introduce new test files for closure class functionality in the compiler, including TypeScript source, expected JSON output, and debug/release WebAssembly text formats. --- tests/compiler/closure-class.debug.wat | 13433 +++++++++++++++++++++ tests/compiler/closure-class.json | 3 + tests/compiler/closure-class.release.wat | 9774 +++++++++++++++ tests/compiler/closure-class.ts | 1010 ++ 4 files changed, 24220 insertions(+) create mode 100644 tests/compiler/closure-class.debug.wat create mode 100644 tests/compiler/closure-class.json create mode 100644 tests/compiler/closure-class.release.wat create mode 100644 tests/compiler/closure-class.ts diff --git a/tests/compiler/closure-class.debug.wat b/tests/compiler/closure-class.debug.wat new file mode 100644 index 0000000000..26557c60f6 --- /dev/null +++ b/tests/compiler/closure-class.debug.wat @@ -0,0 +1,13433 @@ +(module + (type $0 (func (param i32) (result i32))) + (type $1 (func (param i32 i32))) + (type $2 (func (result i32))) + (type $3 (func (param i32))) + (type $4 (func (param i32 i32) (result i32))) + (type $5 (func)) + (type $6 (func (param i32 i32 i32))) + (type $7 (func (param i32 i32 i32) (result i32))) + (type $8 (func (param i32 i32 i32 i32))) + (type $9 (func (param i32 i32 i32 i32) (result i32))) + (type $10 (func (param i32 i32 i64) (result i32))) + (type $11 (func (param i32 i32 i32 i32 i32) (result i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) + (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) + (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) + (global $~lib/rt/__rtti_base i32 (i32.const 2896)) + (global $~lib/memory/__data_end i32 (i32.const 3068)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35836)) + (global $~lib/memory/__heap_base i32 (i32.const 35836)) + (memory $0 1) + (data $0 (i32.const 12) "<\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00") + (data $1 (i32.const 76) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $2 (i32.const 144) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $3 (i32.const 176) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $4 (i32.const 204) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00\00\00\00\00\00\00\00\00") + (data $5 (i32.const 268) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00\00\00\00\00\00\00\00\00") + (data $6 (i32.const 320) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $7 (i32.const 348) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $8 (i32.const 412) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") + (data $9 (i32.const 444) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00") + (data $10 (i32.const 476) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00 \00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00l\00a\00s\00s\00.\00t\00s\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $11 (i32.const 540) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\03\00\00\00\00\00\00\00\00\00\00\00") + (data $12 (i32.const 572) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00") + (data $13 (i32.const 604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\05\00\00\00\00\00\00\00\00\00\00\00") + (data $14 (i32.const 636) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\06\00\00\00\00\00\00\00\00\00\00\00") + (data $15 (i32.const 668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00") + (data $16 (i32.const 700) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00") + (data $17 (i32.const 732) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\t\00\00\00\00\00\00\00\00\00\00\00") + (data $18 (i32.const 764) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\06\00\00\00R\00e\00x\00\00\00\00\00\00\00") + (data $19 (i32.const 796) "<\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1e\00\00\00G\00e\00r\00m\00a\00n\00 \00S\00h\00e\00p\00h\00e\00r\00d\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $20 (i32.const 860) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\n\00\00\00\00\00\00\00\00\00\00\00") + (data $21 (i32.const 892) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\0b\00\00\00\00\00\00\00\00\00\00\00") + (data $22 (i32.const 924) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\0c\00\00\00\00\00\00\00\00\00\00\00") + (data $23 (i32.const 956) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h\00") + (data $24 (i32.const 1004) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00\00\00") + (data $25 (i32.const 1052) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\r\00\00\00\00\00\00\00\00\00\00\00") + (data $26 (i32.const 1084) "|\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $27 (i32.const 1212) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $28 (i32.const 1244) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $29 (i32.const 1276) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0e\00\00\00\00\00\00\00\00\00\00\00") + (data $30 (i32.const 1308) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\0f\00\00\00\00\00\00\00\00\00\00\00") + (data $31 (i32.const 1340) "\1c\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\08\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00") + (data $32 (i32.const 1372) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00S\00E\00L\00E\00C\00T\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $33 (i32.const 1420) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0c\00\00\00 \00F\00R\00O\00M\00 \00") + (data $34 (i32.const 1452) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\0e\00\00\00 \00W\00H\00E\00R\00E\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $35 (i32.const 1500) "\1c\00\00\00\00\00\00\00\00\00\00\00\0f\00\00\00\08\00\00\00\11\00\00\00\00\00\00\00\00\00\00\00") + (data $36 (i32.const 1532) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\10\00\00\00i\00d\00,\00 \00n\00a\00m\00e\00\00\00\00\00\00\00\00\00\00\00\00\00") + (data $37 (i32.const 1580) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\n\00\00\00u\00s\00e\00r\00s\00\00\00") + (data $38 (i32.const 1612) ",\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\14\00\00\00a\00c\00t\00i\00v\00e\00 \00=\00 \001\00\00\00\00\00\00\00\00\00") + (data $39 (i32.const 1660) "l\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00V\00\00\00S\00E\00L\00E\00C\00T\00 \00i\00d\00,\00 \00n\00a\00m\00e\00 \00F\00R\00O\00M\00 \00u\00s\00e\00r\00s\00 \00W\00H\00E\00R\00E\00 \00a\00c\00t\00i\00v\00e\00 \00=\00 \001\00\00\00\00\00\00\00") + (data $40 (i32.const 1772) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\12\00\00\00\00\00\00\00\00\00\00\00") + (data $41 (i32.const 1804) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\13\00\00\00\00\00\00\00\00\00\00\00") + (data $42 (i32.const 1836) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00") + (data $43 (i32.const 1868) "\1c\00\00\00\00\00\00\00\00\00\00\00\05\00\00\00\08\00\00\00\15\00\00\00\00\00\00\00\00\00\00\00") + (data $44 (i32.const 1900) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\16\00\00\00\00\00\00\00\00\00\00\00") + (data $45 (i32.const 1932) "\1c\00\00\00\00\00\00\00\00\00\00\00\19\00\00\00\08\00\00\00\17\00\00\00\00\00\00\00\00\00\00\00") + (data $46 (i32.const 1964) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\18\00\00\00\00\00\00\00\00\00\00\00") + (data $47 (i32.const 1996) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\19\00\00\00\00\00\00\00\00\00\00\00") + (data $48 (i32.const 2028) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\1a\00\00\00\00\00\00\00\00\00\00\00") + (data $49 (i32.const 2060) "\1c\00\00\00\00\00\00\00\00\00\00\00\1b\00\00\00\08\00\00\00\1b\00\00\00\00\00\00\00\00\00\00\00") + (data $50 (i32.const 2092) "\1c\00\00\00\00\00\00\00\00\00\00\00\1d\00\00\00\08\00\00\00\1c\00\00\00\00\00\00\00\00\00\00\00") + (data $51 (i32.const 2124) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00\1d\00\00\00\00\00\00\00\00\00\00\00") + (data $52 (i32.const 2156) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1e\00\00\00\00\00\00\00\00\00\00\00") + (data $53 (i32.const 2188) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00\1f\00\00\00\00\00\00\00\00\00\00\00") + (data $54 (i32.const 2220) "\1c\00\00\00\00\00\00\00\00\00\00\00\1e\00\00\00\08\00\00\00 \00\00\00\00\00\00\00\00\00\00\00") + (data $55 (i32.const 2252) "\1c\00\00\00\00\00\00\00\00\00\00\00\1f\00\00\00\08\00\00\00!\00\00\00\00\00\00\00\00\00\00\00") + (data $56 (i32.const 2284) "\1c\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\08\00\00\00\"\00\00\00\00\00\00\00\00\00\00\00") + (data $57 (i32.const 2316) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00#\00\00\00\00\00\00\00\00\00\00\00") + (data $58 (i32.const 2348) "\1c\00\00\00\00\00\00\00\00\00\00\00\"\00\00\00\08\00\00\00$\00\00\00\00\00\00\00\00\00\00\00") + (data $59 (i32.const 2380) "\1c\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\08\00\00\00%\00\00\00\00\00\00\00\00\00\00\00") + (data $60 (i32.const 2412) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00&\00\00\00\00\00\00\00\00\00\00\00") + (data $61 (i32.const 2444) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00\'\00\00\00\00\00\00\00\00\00\00\00") + (data $62 (i32.const 2476) "\1c\00\00\00\00\00\00\00\00\00\00\00\08\00\00\00\08\00\00\00(\00\00\00\00\00\00\00\00\00\00\00") + (data $63 (i32.const 2508) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00)\00\00\00\00\00\00\00\00\00\00\00") + (data $64 (i32.const 2540) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\00*\00\00\00\00\00\00\00\00\00\00\00") + (data $65 (i32.const 2572) "\1c\00\00\00\00\00\00\00\00\00\00\00&\00\00\00\08\00\00\00+\00\00\00\00\00\00\00\00\00\00\00") + (data $66 (i32.const 2604) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00,\00\00\00\00\00\00\00\00\00\00\00") + (data $67 (i32.const 2636) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00-\00\00\00\00\00\00\00\00\00\00\00") + (data $68 (i32.const 2668) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00.\00\00\00\00\00\00\00\00\00\00\00") + (data $69 (i32.const 2700) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\00/\00\00\00\00\00\00\00\00\00\00\00") + (data $70 (i32.const 2732) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\000\00\00\00\00\00\00\00\00\00\00\00") + (data $71 (i32.const 2764) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\001\00\00\00\00\00\00\00\00\00\00\00") + (data $72 (i32.const 2796) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\002\00\00\00\00\00\00\00\00\00\00\00") + (data $73 (i32.const 2828) "\1c\00\00\00\00\00\00\00\00\00\00\00\16\00\00\00\08\00\00\003\00\00\00\00\00\00\00\00\00\00\00") + (data $74 (i32.const 2860) "\1c\00\00\00\00\00\00\00\00\00\00\00\06\00\00\00\08\00\00\004\00\00\00\00\00\00\00\00\00\00\00") + (data $75 (i32.const 2896) "*\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\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\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02A\00\00 \00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\02A\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\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\00\00\00\00\00\00\00\00\02A\00\00 \00\00\00") + (table $0 53 53 funcref) + (elem $0 (i32.const 1) $closure-class/Counter#getIncrementClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getDepositClosure~anonymous|0 $closure-class/BankAccount#getWithdrawClosure~anonymous|0 $closure-class/BankAccount#getBalanceClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Calculator#getOperationClosure~anonymous|0 $closure-class/Outer#getComputeClosure~anonymous|0 $closure-class/Outer#getInnerSetterClosure~anonymous|0 $closure-class/Animal#getAgeClosure~anonymous|0 $closure-class/Animal#getAgeIncrementClosure~anonymous|0 $closure-class/Dog#getBreedClosure~anonymous|0 $closure-class/DataProcessor#getProcessorClosure~anonymous|0 $closure-class/QueryBuilder#getSelectClosure~anonymous|0 $closure-class/QueryBuilder#getFromClosure~anonymous|0 $closure-class/QueryBuilder#getWhereClosure~anonymous|0 $closure-class/QueryBuilder#getBuildClosure~anonymous|0 $closure-class/StateMachine#getStartClosure~anonymous|0 $closure-class/StateMachine#getPauseClosure~anonymous|0 $closure-class/StateMachine#getStopClosure~anonymous|0 $closure-class/StateMachine#getResetClosure~anonymous|0 $closure-class/StateMachine#getStateClosure~anonymous|0 $closure-class/Observable#getSubscribeClosure~anonymous|0 $closure-class/Observable#getSetClosure~anonymous|0 $closure-class/Observable#getGetClosure~anonymous|0 $closure-class/ObserverState#getCountObserver~anonymous|0 $closure-class/ObserverState#getDiffObserver~anonymous|0 $closure-class/Box#getMapClosure~anonymous|0 $closure-class/Box#getValueClosure~anonymous|0 $closure-class/testBoxMap~anonymous|0 $closure-class/testBoxMap~anonymous|1 $closure-class/testBoxMap~anonymous|2 $closure-class/Box#getFlatMapClosure~anonymous|0 $closure-class/testBoxFlatMap~anonymous|0 $closure-class/ChainableCounter#getAddClosure~anonymous|0 $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 $closure-class/Task#getThenClosure~anonymous|0 $closure-class/Task#getCompleteClosure~anonymous|0 $closure-class/testTaskCallbacks~anonymous|0 $closure-class/testTaskCallbackAfterComplete~anonymous|0 $closure-class/Resource#getAcquireClosure~anonymous|0 $closure-class/Resource#getReleaseClosure~anonymous|0 $closure-class/Resource#getUseClosure~anonymous|0 $closure-class/testResourceManagement~anonymous|0 $closure-class/testResourceManagement~anonymous|1 $closure-class/testResourceManagement~anonymous|2 $closure-class/testResourceManagement~anonymous|3 $closure-class/testResourceManagement~anonymous|4 $closure-class/TreeNode#getSumClosure~anonymous|0 $closure-class/TreeNode#getDepthClosure~anonymous|0 $closure-class/Range#getHasNextClosure~anonymous|0 $closure-class/Range#getNextClosure~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) + local.get $this + local.get $nextWithColor + i32.store offset=4 + ) + (func $~lib/rt/itcms/Object#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=8 + ) + (func $~lib/rt/itcms/initLazy (param $space i32) (result i32) + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $space + local.get $space + call $~lib/rt/itcms/Object#set:prev + local.get $space + return + ) + (func $~lib/rt/itcms/Object#get:nextWithColor (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/itcms/Object#get:next (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + return + ) + (func $~lib/rt/itcms/Object#get:color (param $this i32) (result i32) + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + return + ) + (func $~lib/rt/itcms/visitRoots (param $cookie i32) + (local $pn i32) + (local $iter i32) + local.get $cookie + call $~lib/rt/__visit_globals + global.get $~lib/rt/itcms/pinSpace + local.set $pn + local.get $pn + call $~lib/rt/itcms/Object#get:next + local.set $iter + loop $while-continue|0 + local.get $iter + local.get $pn + i32.ne + if + i32.const 1 + drop + local.get $iter + call $~lib/rt/itcms/Object#get:color + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $iter + i32.const 20 + i32.add + local.get $cookie + call $~lib/rt/__visit_members + local.get $iter + call $~lib/rt/itcms/Object#get:next + local.set $iter + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#set:color (param $this i32) (param $color i32) + local.get $this + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $color + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/itcms/Object#set:next (param $this i32) (param $obj i32) + local.get $this + local.get $obj + local.get $this + call $~lib/rt/itcms/Object#get:nextWithColor + i32.const 3 + i32.and + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + ) + (func $~lib/rt/itcms/Object#unlink (param $this i32) + (local $next i32) + (local $prev i32) + local.get $this + call $~lib/rt/itcms/Object#get:next + local.set $next + local.get $next + i32.const 0 + i32.eq + if + i32.const 1 + drop + local.get $this + call $~lib/rt/itcms/Object#get:prev + i32.const 0 + i32.eq + if (result i32) + local.get $this + global.get $~lib/memory/__heap_base + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + return + end + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.set $prev + i32.const 1 + drop + local.get $prev + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $next + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $next + call $~lib/rt/itcms/Object#set:next + ) + (func $~lib/rt/itcms/Object#get:rtId (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/shared/typeinfo/Typeinfo#get:flags (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/__typeinfo (param $id i32) (result i32) + (local $ptr i32) + global.get $~lib/rt/__rtti_base + local.set $ptr + local.get $id + local.get $ptr + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $ptr + i32.const 4 + i32.add + local.get $id + i32.const 4 + i32.mul + i32.add + call $~lib/shared/typeinfo/Typeinfo#get:flags + return + ) + (func $~lib/rt/itcms/Object#get:isPointerfree (param $this i32) (result i32) + (local $rtId i32) + local.get $this + call $~lib/rt/itcms/Object#get:rtId + local.set $rtId + local.get $rtId + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $rtId + call $~lib/rt/__typeinfo + i32.const 32 + i32.and + i32.const 0 + i32.ne + end + return + ) + (func $~lib/rt/itcms/Object#linkTo (param $this i32) (param $list i32) (param $withColor i32) + (local $prev i32) + local.get $list + call $~lib/rt/itcms/Object#get:prev + local.set $prev + local.get $this + local.get $list + local.get $withColor + i32.or + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $this + local.get $prev + call $~lib/rt/itcms/Object#set:prev + local.get $prev + local.get $this + call $~lib/rt/itcms/Object#set:next + local.get $list + local.get $this + call $~lib/rt/itcms/Object#set:prev + ) + (func $~lib/rt/itcms/Object#makeGray (param $this i32) + (local $1 i32) + local.get $this + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $this + call $~lib/rt/itcms/Object#get:prev + local.tee $1 + i32.eqz + if (result i32) + i32.const 0 + i32.const 96 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + else + local.get $1 + end + global.set $~lib/rt/itcms/iter + end + local.get $this + call $~lib/rt/itcms/Object#unlink + local.get $this + global.get $~lib/rt/itcms/toSpace + local.get $this + call $~lib/rt/itcms/Object#get:isPointerfree + if (result i32) + global.get $~lib/rt/itcms/white + i32.eqz + else + i32.const 2 + end + call $~lib/rt/itcms/Object#linkTo + ) + (func $~lib/rt/itcms/__visit (param $ptr i32) (param $cookie i32) + (local $obj i32) + local.get $ptr + i32.eqz + if + return + end + local.get $ptr + i32.const 20 + i32.sub + local.set $obj + i32.const 0 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $obj + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/itcms/visitStack (param $cookie i32) + (local $ptr i32) + global.get $~lib/memory/__stack_pointer + local.set $ptr + loop $while-continue|0 + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $ptr + i32.load + local.get $cookie + call $~lib/rt/itcms/__visit + local.get $ptr + i32.const 4 + i32.add + local.set $ptr + br $while-continue|0 + end + end + ) + (func $~lib/rt/common/BLOCK#get:mmInfo (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:size (param $this i32) (result i32) + i32.const 4 + local.get $this + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + return + ) + (func $~lib/rt/tlsf/Root#set:flMap (param $this i32) (param $flMap i32) + local.get $this + local.get $flMap + i32.store + ) + (func $~lib/rt/common/BLOCK#set:mmInfo (param $this i32) (param $mmInfo i32) + local.get $this + local.get $mmInfo + i32.store + ) + (func $~lib/rt/tlsf/Block#set:prev (param $this i32) (param $prev i32) + local.get $this + local.get $prev + i32.store offset=4 + ) + (func $~lib/rt/tlsf/Block#set:next (param $this i32) (param $next i32) + local.get $this + local.get $next + i32.store offset=8 + ) + (func $~lib/rt/tlsf/Block#get:prev (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/rt/tlsf/Block#get:next (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/rt/tlsf/Root#get:flMap (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/tlsf/removeBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $6 i32) + (local $7 i32) + (local $boundedSize i32) + (local $prev i32) + (local $next i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $root|14 i32) + (local $fl|15 i32) + (local $sl|16 i32) + (local $head i32) + (local $root|18 i32) + (local $fl|19 i32) + (local $slMap i32) + (local $root|21 i32) + (local $fl|22 i32) + (local $slMap|23 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $6 + i32.const 1073741820 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/tlsf/Block#get:prev + local.set $prev + local.get $block + call $~lib/rt/tlsf/Block#get:next + local.set $next + local.get $prev + if + local.get $prev + local.get $next + call $~lib/rt/tlsf/Block#set:next + end + local.get $next + if + local.get $next + local.get $prev + call $~lib/rt/tlsf/Block#set:prev + end + local.get $block + block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.0 + end + i32.eq + if + local.get $root + local.set $root|14 + local.get $fl + local.set $fl|15 + local.get $sl + local.set $sl|16 + local.get $next + local.set $head + local.get $root|14 + local.get $fl|15 + i32.const 4 + i32.shl + local.get $sl|16 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $next + i32.eqz + if + block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) + local.get $root + local.set $root|18 + local.get $fl + local.set $fl|19 + local.get $root|18 + local.get $fl|19 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.0 + end + local.set $slMap + local.get $root + local.set $root|21 + local.get $fl + local.set $fl|22 + local.get $slMap + i32.const 1 + local.get $sl + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $slMap + local.set $slMap|23 + local.get $root|21 + local.get $fl|22 + i32.const 2 + i32.shl + i32.add + local.get $slMap|23 + i32.store offset=4 + local.get $slMap + i32.eqz + if + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.const -1 + i32.xor + i32.and + call $~lib/rt/tlsf/Root#set:flMap + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $root i32) (param $block i32) + (local $blockInfo i32) + (local $block|3 i32) + (local $right i32) + (local $rightInfo i32) + (local $block|6 i32) + (local $block|7 i32) + (local $left i32) + (local $leftInfo i32) + (local $size i32) + (local $fl i32) + (local $sl i32) + (local $13 i32) + (local $14 i32) + (local $boundedSize i32) + (local $root|16 i32) + (local $fl|17 i32) + (local $sl|18 i32) + (local $head i32) + (local $root|20 i32) + (local $fl|21 i32) + (local $sl|22 i32) + (local $head|23 i32) + (local $root|24 i32) + (local $fl|25 i32) + (local $root|26 i32) + (local $fl|27 i32) + (local $slMap i32) + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 201 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $blockInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) + local.get $block + local.set $block|3 + local.get $block|3 + i32.const 4 + i32.add + local.get $block|3 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.0 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + local.get $rightInfo + i32.const 1 + i32.and + if + local.get $root + local.get $right + call $~lib/rt/tlsf/removeBlock + local.get $block + local.get $blockInfo + i32.const 4 + i32.add + local.get $rightInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.1 + end + local.set $right + local.get $right + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $rightInfo + end + local.get $blockInfo + i32.const 2 + i32.and + if + block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.sub + i32.load + br $~lib/rt/tlsf/GETFREELEFT|inlined.0 + end + local.set $left + local.get $left + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $leftInfo + i32.const 1 + drop + local.get $leftInfo + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $left + call $~lib/rt/tlsf/removeBlock + local.get $left + local.set $block + local.get $block + local.get $leftInfo + i32.const 4 + i32.add + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.tee $blockInfo + call $~lib/rt/common/BLOCK#set:mmInfo + end + local.get $right + local.get $rightInfo + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $size + i32.const 1 + drop + local.get $size + i32.const 12 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.get $right + i32.eq + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 234 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $right + i32.const 4 + i32.sub + local.get $block + i32.store + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + local.tee $13 + i32.const 1073741820 + local.tee $14 + local.get $13 + local.get $14 + i32.lt_u + select + local.set $boundedSize + i32.const 31 + local.get $boundedSize + i32.clz + i32.sub + local.set $fl + local.get $boundedSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) + local.get $root + local.set $root|16 + local.get $fl + local.set $fl|17 + local.get $sl + local.set $sl|18 + local.get $root|16 + local.get $fl|17 + i32.const 4 + i32.shl + local.get $sl|18 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.1 + end + local.set $head + local.get $block + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $block + local.get $head + call $~lib/rt/tlsf/Block#set:next + local.get $head + if + local.get $head + local.get $block + call $~lib/rt/tlsf/Block#set:prev + end + local.get $root + local.set $root|20 + local.get $fl + local.set $fl|21 + local.get $sl + local.set $sl|22 + local.get $block + local.set $head|23 + local.get $root|20 + local.get $fl|21 + i32.const 4 + i32.shl + local.get $sl|22 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head|23 + i32.store offset=96 + local.get $root + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 1 + local.get $fl + i32.shl + i32.or + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|26 + local.get $fl + local.set $fl|27 + block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) + local.get $root + local.set $root|24 + local.get $fl + local.set $fl|25 + local.get $root|24 + local.get $fl|25 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.1 + end + i32.const 1 + local.get $sl + i32.shl + i32.or + local.set $slMap + local.get $root|26 + local.get $fl|27 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $root i32) (param $start i32) (param $endU64 i64) (result i32) + (local $end i32) + (local $root|4 i32) + (local $tail i32) + (local $tailInfo i32) + (local $size i32) + (local $leftSize i32) + (local $left i32) + (local $root|10 i32) + (local $tail|11 i32) + local.get $endU64 + i32.wrap_i64 + local.set $end + i32.const 1 + drop + local.get $start + i64.extend_i32_u + local.get $endU64 + i64.le_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + local.set $start + local.get $end + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $end + block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) + local.get $root + local.set $root|4 + local.get $root|4 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.0 + end + local.set $tail + i32.const 0 + local.set $tailInfo + local.get $tail + if + i32.const 1 + drop + local.get $start + local.get $tail + i32.const 4 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $start + i32.const 16 + i32.sub + local.get $tail + i32.eq + if + local.get $start + i32.const 16 + i32.sub + local.set $start + local.get $tail + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $tailInfo + else + end + else + i32.const 1 + drop + local.get $start + local.get $root + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $end + local.get $start + i32.sub + local.set $size + local.get $size + i32.const 4 + i32.const 12 + i32.add + i32.const 4 + i32.add + i32.lt_u + if + i32.const 0 + return + end + local.get $size + i32.const 2 + i32.const 4 + i32.mul + i32.sub + local.set $leftSize + local.get $start + local.set $left + local.get $left + local.get $leftSize + i32.const 1 + i32.or + local.get $tailInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:prev + local.get $left + i32.const 0 + call $~lib/rt/tlsf/Block#set:next + local.get $start + i32.const 4 + i32.add + local.get $leftSize + i32.add + local.set $tail + local.get $tail + i32.const 0 + i32.const 2 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.set $root|10 + local.get $tail + local.set $tail|11 + local.get $root|10 + local.get $tail|11 + i32.store offset=1568 + local.get $root + local.get $left + call $~lib/rt/tlsf/insertBlock + i32.const 1 + return + ) + (func $~lib/rt/tlsf/initialize + (local $rootOffset i32) + (local $pagesBefore i32) + (local $pagesNeeded i32) + (local $root i32) + (local $root|4 i32) + (local $tail i32) + (local $fl i32) + (local $root|7 i32) + (local $fl|8 i32) + (local $slMap i32) + (local $sl i32) + (local $root|11 i32) + (local $fl|12 i32) + (local $sl|13 i32) + (local $head i32) + (local $memStart i32) + i32.const 0 + drop + global.get $~lib/memory/__heap_base + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.set $rootOffset + memory.size + local.set $pagesBefore + local.get $rootOffset + 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 $pagesNeeded + local.get $pagesNeeded + local.get $pagesBefore + i32.gt_s + if (result i32) + local.get $pagesNeeded + local.get $pagesBefore + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $rootOffset + local.set $root + local.get $root + i32.const 0 + call $~lib/rt/tlsf/Root#set:flMap + local.get $root + local.set $root|4 + i32.const 0 + local.set $tail + local.get $root|4 + local.get $tail + i32.store offset=1568 + i32.const 0 + local.set $fl + loop $for-loop|0 + local.get $fl + i32.const 23 + i32.lt_u + if + local.get $root + local.set $root|7 + local.get $fl + local.set $fl|8 + i32.const 0 + local.set $slMap + local.get $root|7 + local.get $fl|8 + i32.const 2 + i32.shl + i32.add + local.get $slMap + i32.store offset=4 + i32.const 0 + local.set $sl + loop $for-loop|1 + local.get $sl + i32.const 16 + i32.lt_u + if + local.get $root + local.set $root|11 + local.get $fl + local.set $fl|12 + local.get $sl + local.set $sl|13 + i32.const 0 + local.set $head + local.get $root|11 + local.get $fl|12 + i32.const 4 + i32.shl + local.get $sl|13 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $head + i32.store offset=96 + local.get $sl + i32.const 1 + i32.add + local.set $sl + br $for-loop|1 + end + end + local.get $fl + i32.const 1 + i32.add + local.set $fl + br $for-loop|0 + end + end + local.get $rootOffset + i32.const 1572 + i32.add + local.set $memStart + i32.const 0 + drop + local.get $root + local.get $memStart + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $root + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/tlsf/checkUsedBlock (param $ptr i32) (result i32) + (local $block i32) + local.get $ptr + i32.const 4 + i32.sub + local.set $block + local.get $ptr + i32.const 0 + i32.ne + if (result i32) + local.get $ptr + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $block + return + ) + (func $~lib/rt/tlsf/freeBlock (param $root i32) (param $block i32) + i32.const 0 + drop + local.get $block + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $block + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/__free (param $ptr i32) + local.get $ptr + global.get $~lib/memory/__heap_base + i32.lt_u + if + return + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $ptr + call $~lib/rt/tlsf/checkUsedBlock + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/itcms/free (param $obj i32) + local.get $obj + global.get $~lib/memory/__heap_base + i32.lt_u + if + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:nextWithColor + local.get $obj + i32.const 0 + call $~lib/rt/itcms/Object#set:prev + else + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.sub + global.set $~lib/rt/itcms/total + i32.const 0 + drop + local.get $obj + i32.const 4 + i32.add + call $~lib/rt/tlsf/__free + end + ) + (func $~lib/rt/itcms/step (result i32) + (local $obj i32) + (local $1 i32) + (local $black i32) + (local $from i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + local.set $1 + local.get $1 + i32.const 0 + i32.eq + br_if $case0|0 + local.get $1 + i32.const 1 + i32.eq + br_if $case1|0 + local.get $1 + i32.const 2 + i32.eq + br_if $case2|0 + br $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $black + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|1 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + global.set $~lib/rt/itcms/iter + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + i32.const 0 + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.eq + if + i32.const 0 + call $~lib/rt/itcms/visitStack + global.get $~lib/rt/itcms/iter + call $~lib/rt/itcms/Object#get:next + local.set $obj + loop $while-continue|2 + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:color + local.get $black + i32.ne + if + local.get $obj + local.get $black + call $~lib/rt/itcms/Object#set:color + local.get $obj + i32.const 20 + i32.add + i32.const 0 + call $~lib/rt/__visit_members + end + local.get $obj + call $~lib/rt/itcms/Object#get:next + local.set $obj + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $from + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $from + global.set $~lib/rt/itcms/toSpace + local.get $black + global.set $~lib/rt/itcms/white + local.get $from + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.mul + return + end + global.get $~lib/rt/itcms/iter + local.set $obj + local.get $obj + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $obj + call $~lib/rt/itcms/Object#get:next + global.set $~lib/rt/itcms/iter + i32.const 1 + drop + local.get $obj + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $obj + call $~lib/rt/itcms/free + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:nextWithColor + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + call $~lib/rt/itcms/Object#set:prev + i32.const 0 + global.set $~lib/rt/itcms/state + br $break|0 + end + i32.const 0 + return + ) + (func $~lib/rt/itcms/interrupt + (local $budget i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1024 + i32.const 200 + i32.mul + i32.const 100 + i32.div_u + local.set $budget + loop $do-loop|0 + local.get $budget + call $~lib/rt/itcms/step + i32.sub + local.set $budget + global.get $~lib/rt/itcms/state + i32.const 0 + i32.eq + if + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i32.const 200 + i64.extend_i32_u + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + return + end + local.get $budget + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + i32.const 0 + drop + global.get $~lib/rt/itcms/total + i32.const 1024 + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.mul + i32.add + global.set $~lib/rt/itcms/threshold + i32.const 0 + drop + ) + (func $~lib/rt/tlsf/computeSize (param $size i32) (result i32) + local.get $size + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + i32.const 4 + i32.sub + end + return + ) + (func $~lib/rt/tlsf/prepareSize (param $size i32) (result i32) + local.get $size + i32.const 1073741820 + i32.gt_u + if + i32.const 32 + i32.const 368 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $size + call $~lib/rt/tlsf/computeSize + return + ) + (func $~lib/rt/tlsf/roundSize (param $size i32) (result i32) + local.get $size + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $size + i32.const 1 + i32.const 27 + local.get $size + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $size + end + return + ) + (func $~lib/rt/tlsf/searchBlock (param $root i32) (param $size i32) (result i32) + (local $fl i32) + (local $sl i32) + (local $requestSize i32) + (local $root|5 i32) + (local $fl|6 i32) + (local $slMap i32) + (local $head i32) + (local $flMap i32) + (local $root|10 i32) + (local $fl|11 i32) + (local $root|12 i32) + (local $fl|13 i32) + (local $sl|14 i32) + (local $root|15 i32) + (local $fl|16 i32) + (local $sl|17 i32) + local.get $size + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $fl + local.get $size + i32.const 4 + i32.shr_u + local.set $sl + else + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $requestSize + i32.const 4 + i32.const 8 + i32.mul + i32.const 1 + i32.sub + local.get $requestSize + i32.clz + i32.sub + local.set $fl + local.get $requestSize + local.get $fl + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $sl + local.get $fl + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $fl + end + i32.const 1 + drop + local.get $fl + i32.const 23 + i32.lt_u + if (result i32) + local.get $sl + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) + local.get $root + local.set $root|5 + local.get $fl + local.set $fl|6 + local.get $root|5 + local.get $fl|6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.2 + end + i32.const 0 + i32.const -1 + i32.xor + local.get $sl + i32.shl + i32.and + local.set $slMap + i32.const 0 + local.set $head + local.get $slMap + i32.eqz + if + local.get $root + call $~lib/rt/tlsf/Root#get:flMap + i32.const 0 + i32.const -1 + i32.xor + local.get $fl + i32.const 1 + i32.add + i32.shl + i32.and + local.set $flMap + local.get $flMap + i32.eqz + if + i32.const 0 + local.set $head + else + local.get $flMap + i32.ctz + local.set $fl + block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) + local.get $root + local.set $root|10 + local.get $fl + local.set $fl|11 + local.get $root|10 + local.get $fl|11 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + br $~lib/rt/tlsf/GETSL|inlined.3 + end + local.set $slMap + i32.const 1 + drop + local.get $slMap + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) + local.get $root + local.set $root|12 + local.get $fl + local.set $fl|13 + local.get $slMap + i32.ctz + local.set $sl|14 + local.get $root|12 + local.get $fl|13 + i32.const 4 + i32.shl + local.get $sl|14 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.2 + end + local.set $head + end + else + block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) + local.get $root + local.set $root|15 + local.get $fl + local.set $fl|16 + local.get $slMap + i32.ctz + local.set $sl|17 + local.get $root|15 + local.get $fl|16 + i32.const 4 + i32.shl + local.get $sl|17 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + br $~lib/rt/tlsf/GETHEAD|inlined.3 + end + local.set $head + end + local.get $head + return + ) + (func $~lib/rt/tlsf/growMemory (param $root i32) (param $size i32) + (local $pagesBefore i32) + (local $root|3 i32) + (local $pagesNeeded i32) + (local $5 i32) + (local $6 i32) + (local $pagesWanted i32) + (local $pagesAfter i32) + i32.const 0 + drop + local.get $size + i32.const 256 + i32.ge_u + if + local.get $size + call $~lib/rt/tlsf/roundSize + local.set $size + end + memory.size + local.set $pagesBefore + local.get $size + i32.const 4 + local.get $pagesBefore + i32.const 16 + i32.shl + i32.const 4 + i32.sub + block $~lib/rt/tlsf/GETTAIL|inlined.1 (result i32) + local.get $root + local.set $root|3 + local.get $root|3 + i32.load offset=1568 + br $~lib/rt/tlsf/GETTAIL|inlined.1 + end + i32.ne + i32.shl + i32.add + local.set $size + local.get $size + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $pagesNeeded + local.get $pagesBefore + local.tee $5 + local.get $pagesNeeded + local.tee $6 + local.get $5 + local.get $6 + i32.gt_s + select + local.set $pagesWanted + local.get $pagesWanted + memory.grow + i32.const 0 + i32.lt_s + if + local.get $pagesNeeded + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $pagesAfter + local.get $root + local.get $pagesBefore + i32.const 16 + i32.shl + local.get $pagesAfter + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (param $root i32) (param $block i32) (param $size i32) + (local $blockInfo i32) + (local $remaining i32) + (local $spare i32) + (local $block|6 i32) + (local $block|7 i32) + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + local.set $blockInfo + i32.const 1 + drop + local.get $size + i32.const 4 + i32.add + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $blockInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $size + i32.sub + local.set $remaining + local.get $remaining + i32.const 4 + i32.const 12 + i32.add + i32.ge_u + if + local.get $block + local.get $size + local.get $blockInfo + i32.const 2 + i32.and + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $block + i32.const 4 + i32.add + local.get $size + i32.add + local.set $spare + local.get $spare + local.get $remaining + i32.const 4 + i32.sub + i32.const 1 + i32.or + call $~lib/rt/common/BLOCK#set:mmInfo + local.get $root + local.get $spare + call $~lib/rt/tlsf/insertBlock + else + local.get $block + local.get $blockInfo + i32.const 1 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + local.get $block + local.set $block|7 + local.get $block|7 + i32.const 4 + i32.add + local.get $block|7 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.3 + end + block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) + local.get $block + local.set $block|6 + local.get $block|6 + i32.const 4 + i32.add + local.get $block|6 + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + br $~lib/rt/tlsf/GETRIGHT|inlined.2 + end + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 2 + i32.const -1 + i32.xor + i32.and + call $~lib/rt/common/BLOCK#set:mmInfo + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $root i32) (param $size i32) (result i32) + (local $payloadSize i32) + (local $block i32) + local.get $size + call $~lib/rt/tlsf/prepareSize + local.set $payloadSize + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + local.get $block + i32.eqz + if + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/growMemory + local.get $root + local.get $payloadSize + call $~lib/rt/tlsf/searchBlock + local.set $block + i32.const 1 + drop + local.get $block + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + i32.const 1 + drop + local.get $block + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $payloadSize + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 368 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $root + local.get $block + call $~lib/rt/tlsf/removeBlock + local.get $root + local.get $block + local.get $payloadSize + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $block + return + ) + (func $~lib/rt/tlsf/__alloc (param $size i32) (result i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $size + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + return + ) + (func $~lib/rt/itcms/Object#set:rtId (param $this i32) (param $rtId i32) + local.get $this + local.get $rtId + i32.store offset=12 + ) + (func $~lib/rt/itcms/Object#set:rtSize (param $this i32) (param $rtSize i32) + local.get $this + local.get $rtSize + i32.store offset=16 + ) + (func $~lib/rt/itcms/__new (param $size i32) (param $id i32) (result i32) + (local $obj i32) + (local $ptr i32) + local.get $size + i32.const 1073741804 + i32.ge_u + if + i32.const 32 + i32.const 96 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + call $~lib/rt/itcms/interrupt + end + i32.const 16 + local.get $size + i32.add + call $~lib/rt/tlsf/__alloc + i32.const 4 + i32.sub + local.set $obj + local.get $obj + local.get $id + call $~lib/rt/itcms/Object#set:rtId + local.get $obj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $obj + global.get $~lib/rt/itcms/fromSpace + global.get $~lib/rt/itcms/white + call $~lib/rt/itcms/Object#linkTo + global.get $~lib/rt/itcms/total + local.get $obj + call $~lib/rt/itcms/Object#get:size + i32.add + global.set $~lib/rt/itcms/total + local.get $obj + i32.const 20 + i32.add + local.set $ptr + local.get $ptr + i32.const 0 + local.get $size + memory.fill + local.get $ptr + return + ) + (func $closure-class/Counter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $closure-class/Counter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Counter#getIncrementClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 1 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Counter#getCountClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 2 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/BankAccount#set:balance (param $this i32) (param $balance i32) + local.get $this + local.get $balance + i32.store + ) + (func $closure-class/BankAccount#set:transactionCount (param $this i32) (param $transactionCount i32) + local.get $this + local.get $transactionCount + i32.store offset=4 + ) + (func $closure-class/BankAccount#get:balance (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/BankAccount#get:transactionCount (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/BankAccount#getDepositClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 3 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/BankAccount#getWithdrawClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 4 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/BankAccount#getBalanceClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 5 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/BankAccount#getTransactionCountClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 6 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Calculator#set:result (param $this i32) (param $result i32) + local.get $this + local.get $result + i32.store + ) + (func $closure-class/Calculator#get:result (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Calculator#getOperationClosure (param $this i32) (param $operand i32) (param $operation i32) (result i32) + (local $$env i32) + (local $self i32) + (local $5 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $operand + i32.store + local.get $$env + local.get $operation + i32.store offset=4 + local.get $$env + local.get $this + i32.store offset=8 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 7 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + return + ) + (func $closure-class/Inner#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/rt/itcms/__link (param $parentPtr i32) (param $childPtr i32) (param $expectMultiple i32) + (local $child i32) + (local $parent i32) + (local $parentColor i32) + local.get $childPtr + i32.eqz + if + return + end + i32.const 1 + drop + local.get $parentPtr + i32.eqz + if + i32.const 0 + i32.const 96 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $childPtr + i32.const 20 + i32.sub + local.set $child + local.get $child + call $~lib/rt/itcms/Object#get:color + global.get $~lib/rt/itcms/white + i32.eq + if + local.get $parentPtr + i32.const 20 + i32.sub + local.set $parent + local.get $parent + call $~lib/rt/itcms/Object#get:color + local.set $parentColor + local.get $parentColor + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $expectMultiple + if + local.get $parent + call $~lib/rt/itcms/Object#makeGray + else + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + else + local.get $parentColor + i32.const 3 + i32.eq + if (result i32) + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + else + i32.const 0 + end + if + local.get $child + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-class/Outer#set:inner (param $this i32) (param $inner i32) + local.get $this + local.get $inner + i32.store + local.get $this + local.get $inner + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Outer#set:multiplier (param $this i32) (param $multiplier i32) + local.get $this + local.get $multiplier + i32.store offset=4 + ) + (func $closure-class/Outer#get:inner (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Inner#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Outer#get:multiplier (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Outer#getComputeClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 8 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Outer#getInnerSetterClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 9 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Animal#set:name (param $this i32) (param $name i32) + local.get $this + local.get $name + i32.store + local.get $this + local.get $name + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Animal#set:age (param $this i32) (param $age i32) + local.get $this + local.get $age + i32.store offset=4 + ) + (func $closure-class/Dog#set:breed (param $this i32) (param $breed i32) + local.get $this + local.get $breed + i32.store offset=8 + local.get $this + local.get $breed + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Animal#get:age (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Animal#getAgeClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 10 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Animal#getAgeIncrementClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 11 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Dog#get:breed (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Dog#getBreedClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 12 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/string/String#get:length (param $this i32) (result i32) + local.get $this + i32.const 20 + i32.sub + call $~lib/rt/common/OBJECT#get:rtSize + i32.const 1 + i32.shr_u + return + ) + (func $~lib/util/string/compareImpl (param $str1 i32) (param $index1 i32) (param $str2 i32) (param $index2 i32) (param $len i32) (result i32) + (local $ptr1 i32) + (local $ptr2 i32) + (local $7 i32) + (local $a i32) + (local $b i32) + local.get $str1 + local.get $index1 + i32.const 1 + i32.shl + i32.add + local.set $ptr1 + local.get $str2 + local.get $index2 + i32.const 1 + i32.shl + i32.add + local.set $ptr2 + i32.const 0 + i32.const 2 + i32.lt_s + drop + local.get $len + i32.const 4 + i32.ge_u + if (result i32) + local.get $ptr1 + i32.const 7 + i32.and + local.get $ptr2 + i32.const 7 + i32.and + i32.or + i32.eqz + else + i32.const 0 + end + if + block $do-break|0 + loop $do-loop|0 + local.get $ptr1 + i64.load + local.get $ptr2 + i64.load + i64.ne + if + br $do-break|0 + end + local.get $ptr1 + i32.const 8 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 8 + i32.add + local.set $ptr2 + local.get $len + i32.const 4 + i32.sub + local.set $len + local.get $len + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + loop $while-continue|1 + local.get $len + local.tee $7 + i32.const 1 + i32.sub + local.set $len + local.get $7 + if + local.get $ptr1 + i32.load16_u + local.set $a + local.get $ptr2 + i32.load16_u + local.set $b + local.get $a + local.get $b + i32.ne + if + local.get $a + local.get $b + i32.sub + return + end + local.get $ptr1 + i32.const 2 + i32.add + local.set $ptr1 + local.get $ptr2 + i32.const 2 + i32.add + local.set $ptr2 + br $while-continue|1 + end + end + i32.const 0 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28i32%29=>void>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28i32%29=>void>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28i32%29=>void>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/EventEmitter#set:listeners (param $this i32) (param $listeners i32) + local.get $this + local.get $listeners + i32.store + local.get $this + local.get $listeners + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/DataProcessor#set:processedCount (param $this i32) (param $processedCount i32) + local.get $this + local.get $processedCount + i32.store + ) + (func $closure-class/DataProcessor#set:lastValue (param $this i32) (param $lastValue i32) + local.get $this + local.get $lastValue + i32.store offset=4 + ) + (func $closure-class/DataProcessor#set:sum (param $this i32) (param $sum i32) + local.get $this + local.get $sum + i32.store offset=8 + ) + (func $closure-class/DataProcessor#get:processedCount (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/DataProcessor#get:sum (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/DataProcessor#getProcessorClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 13 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/EventEmitter#get:listeners (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:byteLength (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $~lib/arraybuffer/ArrayBufferView#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/rt/itcms/Object#get:rtSize (param $this i32) (result i32) + local.get $this + i32.load offset=16 + ) + (func $~lib/rt/itcms/__renew (param $oldPtr i32) (param $size i32) (result i32) + (local $oldObj i32) + (local $newPtr i32) + (local $4 i32) + (local $5 i32) + local.get $oldPtr + i32.const 20 + i32.sub + local.set $oldObj + local.get $size + local.get $oldObj + call $~lib/rt/common/BLOCK#get:mmInfo + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $oldObj + local.get $size + call $~lib/rt/itcms/Object#set:rtSize + local.get $oldPtr + return + end + local.get $size + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtId + call $~lib/rt/itcms/__new + local.set $newPtr + local.get $newPtr + local.get $oldPtr + local.get $size + local.tee $4 + local.get $oldObj + call $~lib/rt/itcms/Object#get:rtSize + local.tee $5 + local.get $4 + local.get $5 + i32.lt_u + select + memory.copy + local.get $newPtr + return + ) + (func $~lib/array/Array<%28i32%29=>void>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/DataProcessor#get:lastValue (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/QueryBuilder#set:selectFields (param $this i32) (param $selectFields i32) + local.get $this + local.get $selectFields + i32.store + local.get $this + local.get $selectFields + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#set:tableName (param $this i32) (param $tableName i32) + local.get $this + local.get $tableName + i32.store offset=4 + local.get $this + local.get $tableName + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#set:whereClause (param $this i32) (param $whereClause i32) + local.get $this + local.get $whereClause + i32.store offset=8 + local.get $this + local.get $whereClause + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/QueryBuilder#getSelectClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 14 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/QueryBuilder#getFromClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 15 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/QueryBuilder#getWhereClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 16 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/QueryBuilder#get:selectFields (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/QueryBuilder#get:tableName (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/QueryBuilder#get:whereClause (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/QueryBuilder#getBuildClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 17 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/StateMachine#set:state (param $this i32) (param $state i32) + local.get $this + local.get $state + i32.store + ) + (func $closure-class/StateMachine#get:state (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/StateMachine#getStartClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 18 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/StateMachine#getPauseClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 19 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/StateMachine#getStopClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 20 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/StateMachine#getResetClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 21 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/StateMachine#getStateClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 22 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Observable#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/Observable#set:observers (param $this i32) (param $observers i32) + local.get $this + local.get $observers + i32.store offset=4 + local.get $this + local.get $observers + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Observable#get:observers (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Observable#getSubscribeClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 25 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 23 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Observable#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Observable#getSetClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 24 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Observable#getGetClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 25 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/ObserverState#set:changeCount (param $this i32) (param $changeCount i32) + local.get $this + local.get $changeCount + i32.store + ) + (func $closure-class/ObserverState#set:totalDiff (param $this i32) (param $totalDiff i32) + local.get $this + local.get $totalDiff + i32.store offset=4 + ) + (func $closure-class/ObserverState#get:changeCount (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/ObserverState#getCountObserver (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 26 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/ObserverState#get:totalDiff (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/ObserverState#getDiffObserver (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 27 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Box#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $closure-class/Box#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Box#getMapClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 29 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 28 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Box#getValueClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 29 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/testBoxMap~anonymous|0 (param $v i32) (result i32) + local.get $v + i32.const 2 + i32.mul + ) + (func $closure-class/testBoxMap~anonymous|1 (param $v i32) (result i32) + local.get $v + i32.const 3 + i32.add + ) + (func $closure-class/testBoxMap~anonymous|2 (param $v i32) (result i32) + local.get $v + local.get $v + i32.mul + ) + (func $closure-class/Box#getFlatMapClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 31 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 33 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/testBoxFlatMap~anonymous|0 (param $v i32) (result i32) + i32.const 0 + local.get $v + i32.const 10 + i32.mul + call $closure-class/Box#constructor + ) + (func $closure-class/ChainableCounter#set:count (param $this i32) (param $count i32) + local.get $this + local.get $count + i32.store + ) + (func $closure-class/ChainableCounter#get:count (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/ChainableCounter#getAddClosure (param $this i32) (param $amount i32) (result i32) + (local $$env i32) + (local $self i32) + (local $4 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $amount + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 35 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure-class/ChainableCounter#getMultiplyClosure (param $this i32) (param $factor i32) (result i32) + (local $$env i32) + (local $self i32) + (local $4 i32) + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $factor + i32.store + local.get $$env + local.get $this + i32.store offset=4 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 36 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + return + ) + (func $closure-class/Task#set:completed (param $this i32) (param $completed i32) + local.get $this + local.get $completed + i32.store8 + ) + (func $closure-class/Task#set:result (param $this i32) (param $result i32) + local.get $this + local.get $result + i32.store offset=4 + ) + (func $closure-class/Task#set:callbacks (param $this i32) (param $callbacks i32) + local.get $this + local.get $callbacks + i32.store offset=8 + local.get $this + local.get $callbacks + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/Task#get:completed (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $closure-class/Task#get:result (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Task#get:callbacks (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Task#getThenClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 36 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 37 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Task#getCompleteClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 38 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/testTaskCallbacks~anonymous|0 (param $result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $result + i32.const 2 + i32.mul + i32.store + ) + (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $result + i32.store + ) + (func $closure-class/Resource#set:acquired (param $this i32) (param $acquired i32) + local.get $this + local.get $acquired + i32.store8 + ) + (func $closure-class/Resource#set:useCount (param $this i32) (param $useCount i32) + local.get $this + local.get $useCount + i32.store offset=4 + ) + (func $closure-class/Resource#get:acquired (param $this i32) (result i32) + local.get $this + i32.load8_u + ) + (func $closure-class/Resource#getAcquireClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 41 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Resource#getReleaseClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 42 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Resource#get:useCount (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Resource#getUseClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 38 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 43 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/testResourceManagement~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-class/testResourceManagement~anonymous|1 (result i32) + i32.const 10 + ) + (func $closure-class/testResourceManagement~anonymous|2 (result i32) + i32.const 20 + ) + (func $closure-class/testResourceManagement~anonymous|3 (result i32) + i32.const 30 + ) + (func $closure-class/testResourceManagement~anonymous|4 (result i32) + i32.const 42 + ) + (func $closure-class/TreeNode#set:value (param $this i32) (param $value i32) + local.get $this + local.get $value + i32.store + ) + (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) + local.get $this + local.get $buffer + i32.store + local.get $this + local.get $buffer + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $~lib/array/Array#set:dataStart (param $this i32) (param $dataStart i32) + local.get $this + local.get $dataStart + i32.store offset=4 + ) + (func $~lib/array/Array#set:byteLength (param $this i32) (param $byteLength i32) + local.get $this + local.get $byteLength + i32.store offset=8 + ) + (func $~lib/array/Array#set:length_ (param $this i32) (param $length_ i32) + local.get $this + local.get $length_ + i32.store offset=12 + ) + (func $closure-class/TreeNode#set:children (param $this i32) (param $children i32) + local.get $this + local.get $children + i32.store offset=4 + local.get $this + local.get $children + i32.const 0 + call $~lib/rt/itcms/__link + ) + (func $closure-class/TreeNode#get:children (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/array/Array#get:length_ (param $this i32) (result i32) + local.get $this + i32.load offset=12 + ) + (func $~lib/array/Array#get:dataStart (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/TreeNode#get:value (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/TreeNode#getSumClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 49 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/TreeNode#getDepthClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 50 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Range#set:current (param $this i32) (param $current i32) + local.get $this + local.get $current + i32.store + ) + (func $closure-class/Range#set:endVal (param $this i32) (param $endVal i32) + local.get $this + local.get $endVal + i32.store offset=4 + ) + (func $closure-class/Range#set:step (param $this i32) (param $step i32) + local.get $this + local.get $step + i32.store offset=8 + ) + (func $closure-class/Range#get:step (param $this i32) (result i32) + local.get $this + i32.load offset=8 + ) + (func $closure-class/Range#get:current (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $closure-class/Range#get:endVal (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $closure-class/Range#getHasNextClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 51 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-class/Range#getNextClosure (param $this i32) (result i32) + (local $self i32) + (local $$env i32) + (local $3 i32) + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $this + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 52 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $start:closure-class + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 144 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 320 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + call $closure-class/testBasicThisCapture + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testMultipleInstances + i32.const 32 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBankAccount + i32.const 4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testCalculatorClosures + i32.const 24 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testNestedClosures + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testInheritanceClosures + i32.const 5 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testEventEmitterPattern + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBuilderPattern + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 423 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testStateMachine + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 511 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testObservable + i32.const 43 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBoxMap + i32.const 169 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBoxFlatMap + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testClosureChaining + i32.const 35 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTaskCallbacks + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTaskCallbackAfterComplete + i32.const 50 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testResourceManagement + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 855 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testTreePattern + i32.const 2103 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testRangeIterator + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testReverseRangeIterator + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 1005 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + ) + (func $~lib/rt/__visit_globals (param $0 i32) + (local $1 i32) + i32.const 224 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 976 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 1104 + local.get $0 + call $~lib/rt/itcms/__visit + i32.const 32 + local.get $0 + call $~lib/rt/itcms/__visit + ) + (func $~lib/arraybuffer/ArrayBufferView~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/object/Object~visit (param $0 i32) (param $1 i32) + ) + (func $~lib/function/Function<%28%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>#__visit + ) + (func $~lib/function/Function<%28i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>#__visit + ) + (func $closure-class/Outer~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $closure-class/Dog~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $closure-class/Animal~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $closure-class/Animal~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>#__visit + ) + (func $closure-class/EventEmitter~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<%28i32%29=>void>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#__visit + ) + (func $closure-class/QueryBuilder~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>#__visit + ) + (func $~lib/function/Function<%28%29=>bool>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>bool>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>#__visit + ) + (func $closure-class/Observable~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>#__visit + ) + (func $~lib/function/Function<%28i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>#__visit + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#__visit + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-class/Box>#__visit + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#__visit + ) + (func $closure-class/Task~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=8 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>#__visit + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>#get:_env (param $this i32) (result i32) + local.get $this + i32.load offset=4 + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>#__visit + ) + (func $closure-class/TreeNode~visit (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + i32.load offset=4 + local.get $1 + call $~lib/rt/itcms/__visit + ) + (func $~lib/array/Array#get:buffer (param $this i32) (result i32) + local.get $this + i32.load + ) + (func $~lib/array/Array~visit (param $0 i32) (param $1 i32) + local.get $0 + local.get $1 + call $~lib/object/Object~visit + local.get $0 + local.get $1 + call $~lib/array/Array#__visit + ) + (func $~lib/rt/__visit_members (param $0 i32) (param $1 i32) + block $invalid + block $closure-class/Range + block $~lib/array/Array + block $closure-class/TreeNode + block $~lib/function/Function<%28%28%29=>i32%29=>i32> + block $closure-class/Resource + block $~lib/function/Function<%28%28i32%29=>void%29=>void> + block $closure-class/Task + block $~lib/function/Function<%28%29=>closure-class/ChainableCounter> + block $closure-class/ChainableCounter + block $~lib/function/Function<%28i32%29=>closure-class/Box> + block $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box> + block $~lib/function/Function<%28i32%29=>i32> + block $~lib/function/Function<%28%28i32%29=>i32%29=>void> + block $closure-class/Box + block $~lib/function/Function<%28i32%2Ci32%29=>void> + block $closure-class/ObserverState + block $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void> + block $~lib/array/Array<%28i32%2Ci32%29=>void> + block $closure-class/Observable + block $~lib/function/Function<%28%29=>bool> + block $closure-class/StateMachine + block $~lib/function/Function<%28~lib/string/String%29=>void> + block $closure-class/QueryBuilder + block $closure-class/DataProcessor + block $~lib/array/Array<%28i32%29=>void> + block $closure-class/EventEmitter + block $~lib/function/Function<%28%29=>~lib/string/String> + block $closure-class/Animal + block $closure-class/Dog + block $closure-class/Inner + block $closure-class/Outer + block $closure-class/Calculator + block $~lib/function/Function<%28i32%29=>bool> + block $~lib/function/Function<%28i32%29=>void> + block $closure-class/BankAccount + block $~lib/function/Function<%28%29=>i32> + block $~lib/function/Function<%28%29=>void> + block $closure-class/Counter + block $~lib/arraybuffer/ArrayBufferView + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $~lib/arraybuffer/ArrayBufferView $closure-class/Counter $~lib/function/Function<%28%29=>void> $~lib/function/Function<%28%29=>i32> $closure-class/BankAccount $~lib/function/Function<%28i32%29=>void> $~lib/function/Function<%28i32%29=>bool> $closure-class/Calculator $closure-class/Outer $closure-class/Inner $closure-class/Dog $closure-class/Animal $~lib/function/Function<%28%29=>~lib/string/String> $closure-class/EventEmitter $~lib/array/Array<%28i32%29=>void> $closure-class/DataProcessor $closure-class/QueryBuilder $~lib/function/Function<%28~lib/string/String%29=>void> $closure-class/StateMachine $~lib/function/Function<%28%29=>bool> $closure-class/Observable $~lib/array/Array<%28i32%2Ci32%29=>void> $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void> $closure-class/ObserverState $~lib/function/Function<%28i32%2Ci32%29=>void> $closure-class/Box $~lib/function/Function<%28%28i32%29=>i32%29=>void> $~lib/function/Function<%28i32%29=>i32> $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box> $~lib/function/Function<%28i32%29=>closure-class/Box> $closure-class/ChainableCounter $~lib/function/Function<%28%29=>closure-class/ChainableCounter> $closure-class/Task $~lib/function/Function<%28%28i32%29=>void%29=>void> $closure-class/Resource $~lib/function/Function<%28%28%29=>i32%29=>i32> $closure-class/TreeNode $~lib/array/Array $closure-class/Range $invalid + end + return + end + return + end + return + end + local.get $0 + local.get $1 + call $~lib/arraybuffer/ArrayBufferView~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>i32>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>bool>~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/Outer~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/Dog~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Animal~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>~lib/string/String>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/EventEmitter~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $closure-class/QueryBuilder~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28~lib/string/String%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>bool>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Observable~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%2Ci32%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28i32%29=>closure-class/Box>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/Task~visit + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>~visit + return + end + return + end + local.get $0 + local.get $1 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>~visit + return + end + local.get $0 + local.get $1 + call $closure-class/TreeNode~visit + return + end + local.get $0 + local.get $1 + call $~lib/array/Array~visit + return + end + return + end + unreachable + ) + (func $~start + call $start:closure-class + ) + (func $~stack_check + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__data_end + i32.lt_s + if + i32.const 35856 + i32.const 35904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + ) + (func $closure-class/Counter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Counter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Counter#getIncrementClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Counter#get:count + i32.const 1 + i32.add + call $closure-class/Counter#set:count + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Counter#getCountClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Counter#get:count + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBasicThisCapture (result i32) + (local $c i32) + (local $inc i32) + (local $get i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c + i32.store + global.get $~lib/memory/__stack_pointer + local.get $c + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Counter#getIncrementClosure + local.tee $inc + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $c + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Counter#getCountClosure + local.tee $get + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/testMultipleInstances (result i32) + (local $c1 i32) + (local $c2 i32) + (local $inc1 i32) + (local $inc2 i32) + (local $get1 i32) + (local $get2 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) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Counter#constructor + local.tee $c2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $c1 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getIncrementClosure + local.tee $inc1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $c2 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getIncrementClosure + local.tee $inc2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $c1 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getCountClosure + local.tee $get1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $c2 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=8 + local.get $13 + call $closure-class/Counter#getCountClosure + local.tee $get2 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc1 + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inc2 + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get1 + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 10 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get2 + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $2) + i32.add + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $closure-class/BankAccount#constructor (param $this i32) (param $initialBalance i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/BankAccount#set:balance + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/BankAccount#set:transactionCount + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $initialBalance + call $closure-class/BankAccount#set:balance + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/BankAccount#getDepositClosure~anonymous|0 (param $amount i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.add + call $closure-class/BankAccount#set:balance + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:transactionCount + i32.const 1 + i32.add + call $closure-class/BankAccount#set:transactionCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getWithdrawClosure~anonymous|0 (param $amount i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.ge_s + if + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:balance + local.get $amount + i32.sub + call $closure-class/BankAccount#set:balance + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/BankAccount#get:transactionCount + i32.const 1 + i32.add + call $closure-class/BankAccount#set:transactionCount + i32.const 1 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/BankAccount#getBalanceClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/BankAccount#get:balance + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/BankAccount#get:transactionCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBankAccount (result i32) + (local $account i32) + (local $deposit i32) + (local $withdraw i32) + (local $getBalance i32) + (local $getTxCount 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) + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 68 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 100 + call $closure-class/BankAccount#constructor + local.tee $account + i32.store + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getDepositClosure + local.tee $deposit + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getWithdrawClosure + local.tee $withdraw + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getBalanceClosure + local.tee $getBalance + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $account + local.set $16 + global.get $~lib/memory/__stack_pointer + local.get $16 + i32.store offset=4 + local.get $16 + call $closure-class/BankAccount#getTransactionCountClosure + local.tee $getTxCount + i32.store offset=20 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $deposit + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 150 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 30 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 200 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 120 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getTxCount + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 100 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $deposit + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $3) + i32.const 220 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $withdraw + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBalance + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $2) + i32.const 1000 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getTxCount + local.tee $15 + i32.store offset=64 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $2) + i32.add + local.set $16 + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $16 + return + ) + (func $closure-class/Calculator#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Calculator#set:result + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Calculator#getOperationClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 0 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load + i32.add + call $closure-class/Calculator#set:result + else + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load + i32.sub + call $closure-class/Calculator#set:result + else + local.get $$closureEnv + i32.load offset=4 + i32.const 2 + i32.eq + if + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Calculator#get:result + local.get $$closureEnv + i32.load + i32.mul + call $closure-class/Calculator#set:result + end + end + end + local.get $$closureEnv + i32.load offset=8 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Calculator#get:result + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testCalculatorClosures (result i32) + (local $calc i32) + (local $addFive i32) + (local $subtractTwo i32) + (local $multiplyThree i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Calculator#constructor + local.tee $calc + i32.store + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + i32.const 0 + call $closure-class/Calculator#getOperationClosure + local.tee $addFive + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + i32.const 1 + call $closure-class/Calculator#getOperationClosure + local.tee $subtractTwo + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 3 + i32.const 2 + call $closure-class/Calculator#getOperationClosure + local.tee $multiplyThree + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addFive + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $addFive + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $subtractTwo + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $multiplyThree + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + drop + local.get $calc + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Calculator#get:result + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Inner#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Inner#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/Inner#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/Outer#constructor (param $this i32) (param $innerValue i32) (param $mult i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Outer#set:inner + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Outer#set:multiplier + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $innerValue + call $closure-class/Inner#constructor + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Outer#set:inner + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $mult + call $closure-class/Outer#set:multiplier + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Outer#getComputeClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Outer#get:inner + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Inner#get:value + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Outer#get:multiplier + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Outer#getInnerSetterClosure~anonymous|0 (param $v i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Outer#get:inner + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $v + call $closure-class/Inner#set:value + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testNestedClosures (result i32) + (local $outer i32) + (local $compute i32) + (local $setInner i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + i32.const 3 + call $closure-class/Outer#constructor + local.tee $outer + i32.store + global.get $~lib/memory/__stack_pointer + local.get $outer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Outer#getComputeClosure + local.tee $compute + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $outer + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Outer#getInnerSetterClosure + local.tee $setInner + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $setInner + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $compute + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/Animal#constructor (param $this i32) (param $name i32) (param $age i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Animal#set:name + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + call $closure-class/Animal#set:age + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $name + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Animal#set:name + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $age + call $closure-class/Animal#set:age + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Dog#constructor (param $this i32) (param $name i32) (param $age i32) (param $breed i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Dog#set:breed + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $name + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + local.get $age + call $closure-class/Animal#constructor + local.tee $this + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $breed + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $4 + call $closure-class/Dog#set:breed + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $closure-class/Animal#getAgeClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Animal#get:age + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Animal#getAgeIncrementClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/Animal#get:age + i32.const 1 + i32.add + call $closure-class/Animal#set:age + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Dog#getBreedClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Dog#get:breed + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $~lib/string/String.__eq (param $left i32) (param $right i32) (result i32) + (local $leftLength i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.get $right + i32.eq + if + i32.const 1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $right + i32.const 0 + i32.eq + end + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + local.set $leftLength + local.get $leftLength + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/string/String#get:length + i32.ne + if + i32.const 0 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + local.get $left + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + i32.const 0 + local.get $right + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + local.get $leftLength + call $~lib/util/string/compareImpl + i32.eqz + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/testInheritanceClosures (result i32) + (local $dog i32) + (local $getAge i32) + (local $incAge i32) + (local $getBreed i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 784 + i32.const 3 + i32.const 816 + call $closure-class/Dog#constructor + local.tee $dog + i32.store + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Animal#getAgeClosure + local.tee $getAge + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Animal#getAgeIncrementClosure + local.tee $incAge + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $dog + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + call $closure-class/Dog#getBreedClosure + local.tee $getBreed + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getAge + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 292 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getBreed + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + local.set $9 + global.get $~lib/memory/__stack_pointer + local.get $9 + i32.store offset=4 + local.get $9 + i32.const 816 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incAge + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $incAge + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getAge + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + local.set $9 + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $9 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 976 + i32.const 1024 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28i32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28i32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28i32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/EventEmitter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $closure-class/EventEmitter#set:listeners + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/DataProcessor#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:processedCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:lastValue + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/DataProcessor#set:sum + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/DataProcessor#getProcessorClosure~anonymous|0 (param $data i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/DataProcessor#get:processedCount + i32.const 1 + i32.add + call $closure-class/DataProcessor#set:processedCount + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $data + call $closure-class/DataProcessor#set:lastValue + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/DataProcessor#get:sum + local.get $data + i32.add + call $closure-class/DataProcessor#set:sum + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/ensureCapacity (param $array i32) (param $newSize i32) (param $alignLog2 i32) (param $canGrow i32) + (local $oldCapacity i32) + (local $oldData i32) + (local $6 i32) + (local $7 i32) + (local $newCapacity i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $newData i32) + (local $14 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:byteLength + local.set $oldCapacity + local.get $newSize + local.get $oldCapacity + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + local.get $newSize + i32.const 1073741820 + local.get $alignLog2 + i32.shr_u + i32.gt_u + if + i32.const 976 + i32.const 1024 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + local.get $array + local.set $14 + global.get $~lib/memory/__stack_pointer + local.get $14 + i32.store + local.get $14 + call $~lib/arraybuffer/ArrayBufferView#get:buffer + local.set $oldData + local.get $newSize + local.tee $6 + i32.const 8 + local.tee $7 + local.get $6 + local.get $7 + i32.gt_u + select + local.get $alignLog2 + i32.shl + local.set $newCapacity + local.get $canGrow + if + local.get $oldCapacity + i32.const 1 + i32.shl + local.tee $9 + i32.const 1073741820 + local.tee $10 + local.get $9 + local.get $10 + i32.lt_u + select + local.tee $11 + local.get $newCapacity + local.tee $12 + local.get $11 + local.get $12 + i32.gt_u + select + local.set $newCapacity + end + local.get $oldData + local.get $newCapacity + call $~lib/rt/itcms/__renew + local.set $newData + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $newData + local.get $oldData + i32.ne + if + local.get $array + local.get $newData + i32.store + local.get $array + local.get $newData + i32.store offset=4 + local.get $array + local.get $newData + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $array + local.get $newCapacity + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28i32%29=>void>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/EventEmitter#addListener (param $this i32) (param $listener i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/EventEmitter#get:listeners + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $listener + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28i32%29=>void>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 1024 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1104 + i32.const 1024 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/EventEmitter#emit (param $this i32) (param $data i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/EventEmitter#get:listeners + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.lt_s + if + local.get $data + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/EventEmitter#get:listeners + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testEventEmitterPattern (result i32) + (local $emitter i32) + (local $processor1 i32) + (local $processor2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/EventEmitter#constructor + local.tee $emitter + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/DataProcessor#constructor + local.tee $processor1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/DataProcessor#constructor + local.tee $processor2 + i32.store offset=8 + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $closure-class/EventEmitter#addListener + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + call $closure-class/EventEmitter#addListener + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 10 + call $closure-class/EventEmitter#emit + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 20 + call $closure-class/EventEmitter#emit + local.get $emitter + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + i32.const 30 + call $closure-class/EventEmitter#emit + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:processedCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 352 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:processedCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 353 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.const 60 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 355 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:lastValue + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 356 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:lastValue + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 357 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $processor1 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + local.get $processor2 + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/DataProcessor#get:sum + i32.add + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/QueryBuilder#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1232 + call $closure-class/QueryBuilder#set:selectFields + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1264 + call $closure-class/QueryBuilder#set:tableName + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 1264 + call $closure-class/QueryBuilder#set:whereClause + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/QueryBuilder#getSelectClosure~anonymous|0 (param $fields i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $fields + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:selectFields + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getFromClosure~anonymous|0 (param $table i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $table + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:tableName + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getWhereClosure~anonymous|0 (param $clause i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $clause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#set:whereClause + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String#concat (param $this i32) (param $other i32) (result i32) + (local $thisSize i32) + (local $otherSize i32) + (local $outSize i32) + (local $out i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $thisSize + local.get $other + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $otherSize + local.get $thisSize + local.get $otherSize + i32.add + local.set $outSize + local.get $outSize + i32.const 0 + i32.eq + if + i32.const 1264 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + global.get $~lib/memory/__stack_pointer + local.get $outSize + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $out + i32.store offset=4 + local.get $out + local.get $this + local.get $thisSize + memory.copy + local.get $out + local.get $thisSize + i32.add + local.get $other + local.get $otherSize + memory.copy + local.get $out + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/string/String.__concat (param $left i32) (param $right i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $left + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $right + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String#concat + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/QueryBuilder#getBuildClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $query i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $$~lib/__closure_env + local.set $$closureEnv + global.get $~lib/memory/__stack_pointer + i32.const 1392 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + call $closure-class/QueryBuilder#get:selectFields + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 1440 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/QueryBuilder#get:tableName + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.tee $query + i32.store offset=20 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/QueryBuilder#get:whereClause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/string/String#get:length + i32.const 0 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $query + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + i32.const 1472 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + call $closure-class/QueryBuilder#get:whereClause + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/string/String.__concat + local.tee $query + i32.store offset=20 + end + local.get $query + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/testBuilderPattern (result i32) + (local $builder i32) + (local $select i32) + (local $from i32) + (local $where i32) + (local $build i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $query i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/QueryBuilder#constructor + local.tee $builder + i32.store + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getSelectClosure + local.tee $select + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getFromClosure + local.tee $from + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getWhereClosure + local.tee $where + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $builder + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + call $closure-class/QueryBuilder#getBuildClosure + local.tee $build + i32.store offset=20 + i32.const 1552 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $select + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + i32.const 1600 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $from + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + i32.const 1632 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $where + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $build + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + local.tee $query + i32.store offset=40 + local.get $query + local.set $10 + global.get $~lib/memory/__stack_pointer + local.get $10 + i32.store offset=4 + local.get $10 + i32.const 1680 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-class/StateMachine#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/StateMachine#set:state + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/StateMachine#getStartClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 0 + i32.eq + if (result i32) + i32.const 1 + else + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 2 + i32.eq + end + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getPauseClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 1 + i32.eq + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 2 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getStopClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + i32.const 2 + i32.eq + end + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 3 + call $closure-class/StateMachine#set:state + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/StateMachine#getResetClosure~anonymous|0 + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $closure-class/StateMachine#set:state + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/StateMachine#getStateClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/StateMachine#get:state + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testStateMachine (result i32) + (local $sm i32) + (local $start i32) + (local $pause i32) + (local $stop i32) + (local $reset i32) + (local $getState 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) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 84 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/StateMachine#constructor + local.tee $sm + i32.store + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStartClosure + local.tee $start + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getPauseClosure + local.tee $pause + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStopClosure + local.tee $stop + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getResetClosure + local.tee $reset + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $sm + local.set $20 + global.get $~lib/memory/__stack_pointer + local.get $20 + i32.store offset=4 + local.get $20 + call $closure-class/StateMachine#getStateClosure + local.tee $getState + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 488 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 490 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 491 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $pause + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 495 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 496 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 498 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $2) + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 499 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $stop + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 501 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $15 + i32.store offset=64 + local.get $15 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $15 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 502 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $start + local.tee $16 + i32.store offset=68 + local.get $16 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $16 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 504 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $reset + local.tee $17 + i32.store offset=72 + local.get $17 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $17 + i32.load + call_indirect (type $5) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $18 + i32.store offset=76 + local.get $18 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $18 + i32.load + call_indirect (type $2) + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getState + local.tee $19 + i32.store offset=80 + local.get $19 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $19 + i32.load + call_indirect (type $2) + local.set $20 + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $20 + return + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 976 + i32.const 1024 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/Observable#constructor (param $this i32) (param $initial i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Observable#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/Observable#set:observers + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $initial + call $closure-class/Observable#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array<%28i32%2Ci32%29=>void>#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/Observable#getSubscribeClosure~anonymous|0 (param $observer i32) + (local $$closureEnv i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/Observable#get:observers + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $observer + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 1024 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1104 + i32.const 1024 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/Observable#getSetClosure~anonymous|0 (param $newValue i32) + (local $$closureEnv i32) + (local $oldValue i32) + (local $i i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/Observable#get:value + local.set $oldValue + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $newValue + call $closure-class/Observable#set:value + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/Observable#get:observers + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length + i32.lt_s + if + local.get $oldValue + local.get $newValue + global.get $~lib/memory/__stack_pointer + i32.const 2 + global.set $~argumentsLength + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/Observable#get:observers + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + local.get $i + call $~lib/array/Array<%28i32%2Ci32%29=>void>#__get + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $1) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Observable#getGetClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Observable#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ObserverState#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ObserverState#set:changeCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ObserverState#set:totalDiff + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ObserverState#getCountObserver~anonymous|0 (param $oldVal i32) (param $newVal i32) + (local $$closureEnv i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/ObserverState#get:changeCount + i32.const 1 + i32.add + call $closure-class/ObserverState#set:changeCount + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getDiffObserver~anonymous|0 (param $oldVal i32) (param $newVal i32) + (local $$closureEnv i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/ObserverState#get:totalDiff + local.get $newVal + local.get $oldVal + i32.sub + i32.add + call $closure-class/ObserverState#set:totalDiff + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testObservable (result i32) + (local $obs i32) + (local $subscribe i32) + (local $set i32) + (local $get i32) + (local $state 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) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $closure-class/Observable#constructor + local.tee $obs + i32.store + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getSubscribeClosure + local.tee $subscribe + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getSetClosure + local.tee $set + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $obs + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/Observable#getGetClosure + local.tee $get + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/ObserverState#constructor + local.tee $state + i32.store offset=20 + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/ObserverState#getCountObserver + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $subscribe + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/ObserverState#getDiffObserver + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $subscribe + local.tee $6 + i32.store offset=32 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + i32.const 10 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $7 + i32.store offset=36 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + i32.const 25 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $8 + i32.store offset=40 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $3) + i32.const 20 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $set + local.tee $9 + i32.store offset=44 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $10 + i32.store offset=48 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:changeCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:totalDiff + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $get + local.tee $11 + i32.store offset=52 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:changeCount + i32.add + local.get $state + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=4 + local.get $12 + call $closure-class/ObserverState#get:totalDiff + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure-class/Box#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/Box#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/Box#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $closure-class/Box#getMapClosure~anonymous|0 (param $fn i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $closure-class/Box#get:value + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + call $closure-class/Box#set:value + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Box#getValueClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Box#get:value + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/testBoxMap (result i32) + (local $box i32) + (local $map i32) + (local $getValue i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/Box#constructor + local.tee $box + i32.store + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Box#getMapClosure + local.tee $map + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + call $closure-class/Box#getValueClosure + local.tee $getValue + i32.store offset=12 + i32.const 2176 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + i32.const 2208 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + i32.const 2240 + local.set $7 + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=4 + local.get $7 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $map + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + local.set $7 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $7 + return + ) + (func $closure-class/Box#getFlatMapClosure~anonymous|0 (param $fn i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Box#get:value + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $2 + i32.store + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/testBoxFlatMap (result i32) + (local $box i32) + (local $flatMap i32) + (local $2 i32) + (local $result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/Box#constructor + local.tee $box + i32.store + global.get $~lib/memory/__stack_pointer + local.get $box + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Box#getFlatMapClosure + local.tee $flatMap + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2304 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $flatMap + local.tee $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.tee $result + i32.store offset=16 + local.get $result + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Box#get:value + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/ChainableCounter#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/ChainableCounter#set:count + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/ChainableCounter#getAddClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/ChainableCounter#get:count + local.get $$closureEnv + i32.load + i32.add + call $closure-class/ChainableCounter#set:count + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $closure-class/ChainableCounter#get:count + local.get $$closureEnv + i32.load + i32.mul + call $closure-class/ChainableCounter#set:count + local.get $$closureEnv + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testClosureChaining (result i32) + (local $counter i32) + (local $add5 i32) + (local $add10 i32) + (local $mult2 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/ChainableCounter#constructor + local.tee $counter + i32.store + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 5 + call $closure-class/ChainableCounter#getAddClosure + local.tee $add5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 10 + call $closure-class/ChainableCounter#getAddClosure + local.tee $add10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + i32.const 2 + call $closure-class/ChainableCounter#getMultiplyClosure + local.tee $mult2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add5 + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add10 + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $mult2 + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $add5 + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $2) + drop + local.get $counter + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/ChainableCounter#get:count + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Task#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 35 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Task#set:completed + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Task#set:result + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + call $closure-class/Task#set:callbacks + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Task#getThenClosure~anonymous|0 (param $callback i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Task#get:completed + if + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Task#get:result + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $callback + local.tee $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + else + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $3 + call $closure-class/Task#get:callbacks + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $callback + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#push + drop + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#getCompleteClosure~anonymous|0 (param $result i32) + (local $$closureEnv i32) + (local $i i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.const 1 + call $closure-class/Task#set:completed + local.get $$closureEnv + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $result + call $closure-class/Task#set:result + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Task#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.lt_s + if + local.get $result + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $$closureEnv + i32.load + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + call $closure-class/Task#get:callbacks + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $i + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#isCompleted (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Task#get:completed + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testTaskCallbacks (result i32) + (local $task i32) + (local $then i32) + (local $complete i32) + (local $receivedValue i32) + (local $$env i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Task#constructor + local.tee $task + i32.store + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getThenClosure + local.tee $then + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getCompleteClosure + local.tee $complete + i32.store offset=12 + local.get $$env + i32.const 0 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 39 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $then + local.tee $6 + i32.store offset=16 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $3) + local.get $$env + i32.load + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 749 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 21 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $complete + local.tee $7 + i32.store offset=20 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + local.get $$env + i32.load + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 753 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#isCompleted + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 754 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/testTaskCallbackAfterComplete (result i32) + (local $task i32) + (local $then i32) + (local $complete i32) + (local $3 i32) + (local $receivedValue i32) + (local $$env i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 4 + call $~lib/rt/tlsf/__alloc + local.set $$env + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Task#constructor + local.tee $task + i32.store + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getThenClosure + local.tee $then + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $task + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + call $closure-class/Task#getCompleteClosure + local.tee $complete + i32.store offset=12 + i32.const 50 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $complete + local.tee $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + local.get $$env + i32.const 0 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.set $6 + local.get $6 + i32.const 40 + i32.store + local.get $6 + local.get $$env + i32.store offset=4 + local.get $6 + local.set $8 + global.get $~lib/memory/__stack_pointer + local.get $8 + i32.store offset=4 + local.get $8 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $then + local.tee $7 + i32.store offset=20 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $3) + local.get $$env + i32.load + local.set $8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $8 + return + ) + (func $closure-class/Resource#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 37 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + call $~lib/object/Object#constructor + local.tee $this + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Resource#set:acquired + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + call $closure-class/Resource#set:useCount + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Resource#getAcquireClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:acquired + i32.eqz + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 1 + call $closure-class/Resource#set:acquired + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/Resource#getReleaseClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:acquired + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.const 0 + call $closure-class/Resource#set:acquired + i32.const 1 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/Resource#getUseClosure~anonymous|0 (param $action i32) (result i32) + (local $$closureEnv i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $closure-class/Resource#get:acquired + if + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + local.get $$closureEnv + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Resource#get:useCount + i32.const 1 + i32.add + call $closure-class/Resource#set:useCount + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $action + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $2) + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + end + i32.const -1 + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/Resource#getUseCount (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Resource#get:useCount + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $closure-class/testResourceManagement (result i32) + (local $resource i32) + (local $acquire i32) + (local $release i32) + (local $use 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) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $closure-class/Resource#constructor + local.tee $resource + i32.store + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getAcquireClosure + local.tee $acquire + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getReleaseClosure + local.tee $release + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseClosure + local.tee $use + i32.store offset=16 + i32.const 2624 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $4 + i32.store offset=20 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 833 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $acquire + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 836 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $acquire + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 837 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2656 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $7 + i32.store offset=32 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 840 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2688 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $8 + i32.store offset=36 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + i32.const 20 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 841 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2720 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $9 + i32.store offset=40 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $0) + i32.const 30 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 842 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseCount + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 844 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $release + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 847 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $release + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.const 0 + i32.ne + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 848 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + i32.const 2752 + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $use + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 851 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $resource + local.set $13 + global.get $~lib/memory/__stack_pointer + local.get $13 + i32.store offset=4 + local.get $13 + call $closure-class/Resource#getUseCount + local.set $13 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $13 + return + ) + (func $~lib/array/Array#constructor (param $this i32) (param $length i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $bufferSize i32) + (local $buffer i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + call $~lib/array/Array#set:length_ + local.get $length + i32.const 1073741820 + i32.const 2 + i32.shr_u + i32.gt_u + if + i32.const 976 + i32.const 1024 + i32.const 70 + i32.const 60 + call $~lib/builtins/abort + unreachable + end + local.get $length + local.tee $2 + i32.const 8 + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + i32.const 2 + i32.shl + local.set $bufferSize + global.get $~lib/memory/__stack_pointer + local.get $bufferSize + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $buffer + i32.store offset=8 + i32.const 2 + global.get $~lib/shared/runtime/Runtime.Incremental + i32.ne + drop + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=12 + local.get $6 + call $~lib/array/Array#set:buffer + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $buffer + call $~lib/array/Array#set:dataStart + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $bufferSize + call $~lib/array/Array#set:byteLength + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $length + call $~lib/array/Array#set:length_ + local.get $this + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + ) + (func $closure-class/TreeNode#constructor (param $this i32) (param $v i32) (result i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 39 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + call $closure-class/TreeNode#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/array/Array#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/TreeNode#set:children + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $v + call $closure-class/TreeNode#set:value + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + ) + (func $~lib/array/Array#push (param $this i32) (param $value i32) (result i32) + (local $oldLen i32) + (local $len i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length_ + local.set $oldLen + local.get $oldLen + i32.const 1 + i32.add + local.set $len + local.get $this + local.get $len + i32.const 2 + i32.const 1 + call $~lib/array/ensureCapacity + i32.const 1 + drop + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:dataStart + local.get $oldLen + i32.const 2 + i32.shl + i32.add + local.get $value + i32.store + local.get $this + local.get $value + i32.const 1 + call $~lib/rt/itcms/__link + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $len + call $~lib/array/Array#set:length_ + local.get $len + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-class/TreeNode#addChild (param $this i32) (param $child i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + call $closure-class/TreeNode#get:children + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $child + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $~lib/array/Array#push + drop + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#get:length (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $~lib/array/Array#get:length_ + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + ) + (func $~lib/array/Array#__get (param $this i32) (param $index i32) (result i32) + (local $value i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $index + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length_ + i32.ge_u + if + i32.const 224 + i32.const 1024 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $this + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:dataStart + local.get $index + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $value + i32.store offset=4 + i32.const 1 + drop + i32.const 0 + i32.eqz + drop + local.get $value + i32.eqz + if + i32.const 1104 + i32.const 1024 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + local.get $value + local.set $3 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + return + ) + (func $closure-class/TreeNode#getSumClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $sum i32) + (local $i i32) + (local $childSum i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/TreeNode#get:value + local.set $sum + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + call $closure-class/TreeNode#get:children + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $$closureEnv + i32.load + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + call $closure-class/TreeNode#get:children + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + local.get $5 + local.get $i + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $closure-class/TreeNode#getSumClosure + local.tee $childSum + i32.store offset=12 + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $childSum + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $sum + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-class/TreeNode#getDepthClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $maxChildDepth i32) + (local $i i32) + (local $childDepth i32) + (local $4 i32) + (local $d i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.const 0 + i32.eq + if + i32.const 1 + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + end + i32.const 0 + local.set $maxChildDepth + i32.const 0 + local.set $i + loop $for-loop|0 + local.get $i + local.get $$closureEnv + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $~lib/array/Array#get:length + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $$closureEnv + i32.load + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $closure-class/TreeNode#get:children + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + local.get $i + call $~lib/array/Array#__get + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store + local.get $6 + call $closure-class/TreeNode#getDepthClosure + local.tee $childDepth + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $childDepth + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + local.set $d + local.get $d + local.get $maxChildDepth + i32.gt_s + if + local.get $d + local.set $maxChildDepth + end + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + local.get $maxChildDepth + i32.const 1 + i32.add + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-class/testTreePattern (result i32) + (local $root i32) + (local $n2 i32) + (local $n3 i32) + (local $n4 i32) + (local $n5 i32) + (local $n6 i32) + (local $getSum i32) + (local $getDepth i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 1 + call $closure-class/TreeNode#constructor + local.tee $root + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $closure-class/TreeNode#constructor + local.tee $n2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 3 + call $closure-class/TreeNode#constructor + local.tee $n3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 4 + call $closure-class/TreeNode#constructor + local.tee $n4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + call $closure-class/TreeNode#constructor + local.tee $n5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 6 + call $closure-class/TreeNode#constructor + local.tee $n6 + i32.store offset=20 + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n3 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n4 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n2 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n5 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + local.get $n3 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + local.get $n6 + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=28 + local.get $12 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + call $closure-class/TreeNode#getSumClosure + local.tee $getSum + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $root + local.set $12 + global.get $~lib/memory/__stack_pointer + local.get $12 + i32.store offset=24 + local.get $12 + call $closure-class/TreeNode#getDepthClosure + local.tee $getDepth + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getSum + local.tee $8 + i32.store offset=40 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $2) + i32.const 21 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 927 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getDepth + local.tee $9 + i32.store offset=44 + local.get $9 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $9 + i32.load + call_indirect (type $2) + i32.const 3 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 496 + i32.const 928 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getSum + local.tee $10 + i32.store offset=48 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $2) + i32.const 100 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getDepth + local.tee $11 + i32.store offset=52 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $2) + i32.add + local.set $12 + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $12 + return + ) + (func $closure-class/Range#constructor (param $this i32) (param $start i32) (param $endVal i32) (param $step i32) (result i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:current + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:endVal + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + call $closure-class/Range#set:step + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $start + call $closure-class/Range#set:current + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $endVal + call $closure-class/Range#set:endVal + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + local.get $step + call $closure-class/Range#set:step + local.get $this + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + ) + (func $closure-class/Range#getHasNextClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:step + i32.const 0 + i32.gt_s + if + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:endVal + i32.lt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + else + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + call $closure-class/Range#get:endVal + i32.gt_s + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + return + end + unreachable + ) + (func $closure-class/Range#getNextClosure~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $value i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $closure-class/Range#get:current + local.set $value + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Range#get:current + local.get $$closureEnv + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + call $closure-class/Range#get:step + i32.add + call $closure-class/Range#set:current + local.get $value + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + ) + (func $closure-class/testRangeIterator (result i32) + (local $range i32) + (local $hasNext i32) + (local $next i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + i32.const 5 + i32.const 1 + call $closure-class/Range#constructor + local.tee $range + i32.store + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getHasNextClosure + local.tee $hasNext + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getNextClosure + local.tee $next + i32.store offset=12 + i32.const 0 + local.set $sum + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $hasNext + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $next + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + br $while-continue|0 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-class/testReverseRangeIterator (result i32) + (local $range i32) + (local $hasNext i32) + (local $next i32) + (local $sum i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 10 + i32.const 0 + i32.const -2 + call $closure-class/Range#constructor + local.tee $range + i32.store + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getHasNextClosure + local.tee $hasNext + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $range + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + call $closure-class/Range#getNextClosure + local.tee $next + i32.store offset=12 + i32.const 0 + local.set $sum + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $hasNext + local.tee $4 + i32.store offset=16 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + if + local.get $sum + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $next + local.tee $5 + i32.store offset=20 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) + i32.add + local.set $sum + br $while-continue|0 + end + end + local.get $sum + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $~lib/function/Function<%28%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>~lib/string/String>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>~lib/string/String>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%29=>void>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28~lib/string/String%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28~lib/string/String%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>bool>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>bool>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%2Ci32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array<%28i32%2Ci32%29=>void>#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%2Ci32%29=>void%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%2Ci32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%2Ci32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>i32%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>i32%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>closure-class/Box%29=>closure-class/Box>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28i32%29=>closure-class/Box>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28i32%29=>closure-class/Box>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%29=>closure-class/ChainableCounter>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28i32%29=>void%29=>void>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28i32%29=>void%29=>void>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/function/Function<%28%28%29=>i32%29=>i32>#__visit (param $this i32) (param $cookie i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + local.get $2 + call $~lib/function/Function<%28%28%29=>i32%29=>i32>#get:_env + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array#__visit (param $this i32) (param $cookie i32) + (local $cur i32) + (local $end i32) + (local $val i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 1 + drop + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:dataStart + local.set $cur + local.get $cur + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:length_ + i32.const 2 + i32.shl + i32.add + local.set $end + loop $while-continue|0 + local.get $cur + local.get $end + i32.lt_u + if + local.get $cur + i32.load + local.set $val + local.get $val + if + local.get $val + local.get $cookie + call $~lib/rt/itcms/__visit + end + local.get $cur + i32.const 4 + i32.add + local.set $cur + br $while-continue|0 + end + end + local.get $this + local.set $5 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store + local.get $5 + call $~lib/array/Array#get:buffer + local.get $cookie + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $this i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $this + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $this + i32.store + end + local.get $this + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) +) diff --git a/tests/compiler/closure-class.json b/tests/compiler/closure-class.json new file mode 100644 index 0000000000..ea57a955e1 --- /dev/null +++ b/tests/compiler/closure-class.json @@ -0,0 +1,3 @@ +{ + "asc_flags": [] +} diff --git a/tests/compiler/closure-class.release.wat b/tests/compiler/closure-class.release.wat new file mode 100644 index 0000000000..3c00d6cdaa --- /dev/null +++ b/tests/compiler/closure-class.release.wat @@ -0,0 +1,9774 @@ +(module + (type $0 (func (result i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) + (type $4 (func (param i32 i32))) + (type $5 (func (param i32 i32) (result i32))) + (type $6 (func (param i32 i32 i32) (result i32))) + (type $7 (func (param i32 i32 i32 i32))) + (type $8 (func (param i32 i32 i64))) + (type $9 (func (param i32 i32 i32))) + (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/visitCount (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/pinSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/iter (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/toSpace (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/white (mut i32) (i32.const 0)) + (global $~lib/rt/itcms/fromSpace (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $$~lib/__closure_env (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36860)) + (memory $0 1) + (data $0 (i32.const 1036) "<") + (data $0.1 (i32.const 1048) "\02\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 $1 (i32.const 1100) "<") + (data $1.1 (i32.const 1112) "\02\00\00\00 \00\00\00~\00l\00i\00b\00/\00r\00t\00/\00i\00t\00c\00m\00s\00.\00t\00s") + (data $4 (i32.const 1228) "<") + (data $4.1 (i32.const 1240) "\02\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data $5 (i32.const 1292) ",") + (data $5.1 (i32.const 1304) "\02\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data $7 (i32.const 1372) "<") + (data $7.1 (i32.const 1384) "\02\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data $8 (i32.const 1436) "\1c") + (data $8.1 (i32.const 1448) "\05\00\00\00\08\00\00\00\01") + (data $9 (i32.const 1468) "\1c") + (data $9.1 (i32.const 1480) "\06\00\00\00\08\00\00\00\02") + (data $10 (i32.const 1500) "<") + (data $10.1 (i32.const 1512) "\02\00\00\00 \00\00\00c\00l\00o\00s\00u\00r\00e\00-\00c\00l\00a\00s\00s\00.\00t\00s") + (data $11 (i32.const 1564) "\1c") + (data $11.1 (i32.const 1576) "\08\00\00\00\08\00\00\00\03") + (data $12 (i32.const 1596) "\1c") + (data $12.1 (i32.const 1608) "\t\00\00\00\08\00\00\00\04") + (data $13 (i32.const 1628) "\1c") + (data $13.1 (i32.const 1640) "\06\00\00\00\08\00\00\00\05") + (data $14 (i32.const 1660) "\1c") + (data $14.1 (i32.const 1672) "\06\00\00\00\08\00\00\00\06") + (data $15 (i32.const 1692) "\1c") + (data $15.1 (i32.const 1704) "\06\00\00\00\08\00\00\00\07") + (data $16 (i32.const 1724) "\1c") + (data $16.1 (i32.const 1736) "\06\00\00\00\08\00\00\00\08") + (data $17 (i32.const 1756) "\1c") + (data $17.1 (i32.const 1768) "\08\00\00\00\08\00\00\00\t") + (data $18 (i32.const 1788) "\1c") + (data $18.1 (i32.const 1800) "\02\00\00\00\06\00\00\00R\00e\00x") + (data $19 (i32.const 1820) "<") + (data $19.1 (i32.const 1832) "\02\00\00\00\1e\00\00\00G\00e\00r\00m\00a\00n\00 \00S\00h\00e\00p\00h\00e\00r\00d") + (data $20 (i32.const 1884) "\1c") + (data $20.1 (i32.const 1896) "\06\00\00\00\08\00\00\00\n") + (data $21 (i32.const 1916) "\1c") + (data $21.1 (i32.const 1928) "\05\00\00\00\08\00\00\00\0b") + (data $22 (i32.const 1948) "\1c") + (data $22.1 (i32.const 1960) "\0f\00\00\00\08\00\00\00\0c") + (data $23 (i32.const 1980) ",") + (data $23.1 (i32.const 1992) "\02\00\00\00\1c\00\00\00I\00n\00v\00a\00l\00i\00d\00 \00l\00e\00n\00g\00t\00h") + (data $24 (i32.const 2028) ",") + (data $24.1 (i32.const 2040) "\02\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") + (data $25 (i32.const 2076) "\1c") + (data $25.1 (i32.const 2088) "\08\00\00\00\08\00\00\00\r") + (data $26 (i32.const 2108) "|") + (data $26.1 (i32.const 2120) "\02\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 $27 (i32.const 2236) "\1c") + (data $27.1 (i32.const 2248) "\02\00\00\00\02\00\00\00*") + (data $28 (i32.const 2268) "\1c") + (data $28.1 (i32.const 2280) "\02") + (data $29 (i32.const 2300) "\1c") + (data $29.1 (i32.const 2312) "\14\00\00\00\08\00\00\00\0e") + (data $30 (i32.const 2332) "\1c") + (data $30.1 (i32.const 2344) "\14\00\00\00\08\00\00\00\0f") + (data $31 (i32.const 2364) "\1c") + (data $31.1 (i32.const 2376) "\14\00\00\00\08\00\00\00\10") + (data $32 (i32.const 2396) ",") + (data $32.1 (i32.const 2408) "\02\00\00\00\0e\00\00\00S\00E\00L\00E\00C\00T\00 ") + (data $33 (i32.const 2444) "\1c") + (data $33.1 (i32.const 2456) "\02\00\00\00\0c\00\00\00 \00F\00R\00O\00M\00 ") + (data $34 (i32.const 2476) ",") + (data $34.1 (i32.const 2488) "\02\00\00\00\0e\00\00\00 \00W\00H\00E\00R\00E\00 ") + (data $35 (i32.const 2524) "\1c") + (data $35.1 (i32.const 2536) "\0f\00\00\00\08\00\00\00\11") + (data $36 (i32.const 2556) ",") + (data $36.1 (i32.const 2568) "\02\00\00\00\10\00\00\00i\00d\00,\00 \00n\00a\00m\00e") + (data $37 (i32.const 2604) "\1c") + (data $37.1 (i32.const 2616) "\02\00\00\00\n\00\00\00u\00s\00e\00r\00s") + (data $38 (i32.const 2636) ",") + (data $38.1 (i32.const 2648) "\02\00\00\00\14\00\00\00a\00c\00t\00i\00v\00e\00 \00=\00 \001") + (data $39 (i32.const 2684) "l") + (data $39.1 (i32.const 2696) "\02\00\00\00V\00\00\00S\00E\00L\00E\00C\00T\00 \00i\00d\00,\00 \00n\00a\00m\00e\00 \00F\00R\00O\00M\00 \00u\00s\00e\00r\00s\00 \00W\00H\00E\00R\00E\00 \00a\00c\00t\00i\00v\00e\00 \00=\00 \001") + (data $40 (i32.const 2796) "\1c") + (data $40.1 (i32.const 2808) "\16\00\00\00\08\00\00\00\12") + (data $41 (i32.const 2828) "\1c") + (data $41.1 (i32.const 2840) "\16\00\00\00\08\00\00\00\13") + (data $42 (i32.const 2860) "\1c") + (data $42.1 (i32.const 2872) "\16\00\00\00\08\00\00\00\14") + (data $43 (i32.const 2892) "\1c") + (data $43.1 (i32.const 2904) "\05\00\00\00\08\00\00\00\15") + (data $44 (i32.const 2924) "\1c") + (data $44.1 (i32.const 2936) "\06\00\00\00\08\00\00\00\16") + (data $45 (i32.const 2956) "\1c") + (data $45.1 (i32.const 2968) "\19\00\00\00\08\00\00\00\17") + (data $46 (i32.const 2988) "\1c") + (data $46.1 (i32.const 3000) "\08\00\00\00\08\00\00\00\18") + (data $47 (i32.const 3020) "\1c") + (data $47.1 (i32.const 3032) "\06\00\00\00\08\00\00\00\19") + (data $48 (i32.const 3052) "\1c") + (data $48.1 (i32.const 3064) "\1b\00\00\00\08\00\00\00\1a") + (data $49 (i32.const 3084) "\1c") + (data $49.1 (i32.const 3096) "\1b\00\00\00\08\00\00\00\1b") + (data $50 (i32.const 3116) "\1c") + (data $50.1 (i32.const 3128) "\1d\00\00\00\08\00\00\00\1c") + (data $51 (i32.const 3148) "\1c") + (data $51.1 (i32.const 3160) "\06\00\00\00\08\00\00\00\1d") + (data $52 (i32.const 3180) "\1c") + (data $52.1 (i32.const 3192) "\1e\00\00\00\08\00\00\00\1e") + (data $53 (i32.const 3212) "\1c") + (data $53.1 (i32.const 3224) "\1e\00\00\00\08\00\00\00\1f") + (data $54 (i32.const 3244) "\1c") + (data $54.1 (i32.const 3256) "\1e\00\00\00\08\00\00\00 ") + (data $55 (i32.const 3276) "\1c") + (data $55.1 (i32.const 3288) "\1f\00\00\00\08\00\00\00!") + (data $56 (i32.const 3308) "\1c") + (data $56.1 (i32.const 3320) " \00\00\00\08\00\00\00\"") + (data $57 (i32.const 3340) "\1c") + (data $57.1 (i32.const 3352) "\"\00\00\00\08\00\00\00#") + (data $58 (i32.const 3372) "\1c") + (data $58.1 (i32.const 3384) "\"\00\00\00\08\00\00\00$") + (data $59 (i32.const 3404) "\1c") + (data $59.1 (i32.const 3416) "$\00\00\00\08\00\00\00%") + (data $60 (i32.const 3436) "\1c") + (data $60.1 (i32.const 3448) "\08\00\00\00\08\00\00\00&") + (data $61 (i32.const 3468) "\1c") + (data $61.1 (i32.const 3480) "\08\00\00\00\08\00\00\00\'") + (data $62 (i32.const 3500) "\1c") + (data $62.1 (i32.const 3512) "\08\00\00\00\08\00\00\00(") + (data $63 (i32.const 3532) "\1c") + (data $63.1 (i32.const 3544) "\16\00\00\00\08\00\00\00)") + (data $64 (i32.const 3564) "\1c") + (data $64.1 (i32.const 3576) "\16\00\00\00\08\00\00\00*") + (data $65 (i32.const 3596) "\1c") + (data $65.1 (i32.const 3608) "&\00\00\00\08\00\00\00+") + (data $66 (i32.const 3628) "\1c") + (data $66.1 (i32.const 3640) "\06\00\00\00\08\00\00\00,") + (data $67 (i32.const 3660) "\1c") + (data $67.1 (i32.const 3672) "\06\00\00\00\08\00\00\00-") + (data $68 (i32.const 3692) "\1c") + (data $68.1 (i32.const 3704) "\06\00\00\00\08\00\00\00.") + (data $69 (i32.const 3724) "\1c") + (data $69.1 (i32.const 3736) "\06\00\00\00\08\00\00\00/") + (data $70 (i32.const 3756) "\1c") + (data $70.1 (i32.const 3768) "\06\00\00\00\08\00\00\000") + (data $71 (i32.const 3788) "\1c") + (data $71.1 (i32.const 3800) "\06\00\00\00\08\00\00\001") + (data $72 (i32.const 3820) "\1c") + (data $72.1 (i32.const 3832) "\06\00\00\00\08\00\00\002") + (data $73 (i32.const 3852) "\1c") + (data $73.1 (i32.const 3864) "\16\00\00\00\08\00\00\003") + (data $74 (i32.const 3884) "\1c") + (data $74.1 (i32.const 3896) "\06\00\00\00\08\00\00\004") + (data $75 (i32.const 3920) "*\00\00\00 \00\00\00 \00\00\00 \00\00\00\00\00\00\00 ") + (data $75.1 (i32.const 3952) " ") + (data $75.2 (i32.const 3964) " \00\00\00\00\00\00\00 ") + (data $75.3 (i32.const 3992) "\02A\00\00 ") + (data $75.4 (i32.const 4008) " ") + (data $75.5 (i32.const 4020) "\02A\00\00\00\00\00\00 \00\00\00\00\00\00\00 ") + (data $75.6 (i32.const 4056) " ") + (data $75.7 (i32.const 4072) " ") + (data $75.8 (i32.const 4084) "\02A\00\00 ") + (table $0 53 53 funcref) + (elem $0 (i32.const 1) $closure-class/Counter#getIncrementClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getDepositClosure~anonymous|0 $closure-class/BankAccount#getWithdrawClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Calculator#getOperationClosure~anonymous|0 $closure-class/Outer#getComputeClosure~anonymous|0 $closure-class/Outer#getInnerSetterClosure~anonymous|0 $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 $closure-class/Animal#getAgeIncrementClosure~anonymous|0 $closure-class/Dog#getBreedClosure~anonymous|0 $closure-class/DataProcessor#getProcessorClosure~anonymous|0 $closure-class/QueryBuilder#getSelectClosure~anonymous|0 $closure-class/QueryBuilder#getFromClosure~anonymous|0 $closure-class/QueryBuilder#getWhereClosure~anonymous|0 $closure-class/QueryBuilder#getBuildClosure~anonymous|0 $closure-class/StateMachine#getStartClosure~anonymous|0 $closure-class/StateMachine#getPauseClosure~anonymous|0 $closure-class/StateMachine#getStopClosure~anonymous|0 $closure-class/StateMachine#getResetClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/Observable#getSubscribeClosure~anonymous|0 $closure-class/Observable#getSetClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/ObserverState#getCountObserver~anonymous|0 $closure-class/ObserverState#getDiffObserver~anonymous|0 $closure-class/Box#getMapClosure~anonymous|0 $closure-class/Counter#getCountClosure~anonymous|0 $closure-class/testBoxMap~anonymous|0 $closure-class/testBoxMap~anonymous|1 $closure-class/testBoxMap~anonymous|2 $closure-class/Box#getFlatMapClosure~anonymous|0 $closure-class/testBoxFlatMap~anonymous|0 $closure-class/ChainableCounter#getAddClosure~anonymous|0 $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 $closure-class/Task#getThenClosure~anonymous|0 $closure-class/Task#getCompleteClosure~anonymous|0 $closure-class/testTaskCallbacks~anonymous|0 $closure-class/testTaskCallbackAfterComplete~anonymous|0 $closure-class/Resource#getAcquireClosure~anonymous|0 $closure-class/Resource#getReleaseClosure~anonymous|0 $closure-class/Resource#getUseClosure~anonymous|0 $closure-class/testResourceManagement~anonymous|0 $closure-class/testResourceManagement~anonymous|1 $closure-class/testResourceManagement~anonymous|2 $closure-class/testResourceManagement~anonymous|3 $closure-class/testResourceManagement~anonymous|0 $closure-class/TreeNode#getSumClosure~anonymous|0 $closure-class/TreeNode#getDepthClosure~anonymous|0 $closure-class/Range#getHasNextClosure~anonymous|0 $closure-class/Range#getNextClosure~anonymous|0) + (export "memory" (memory $0)) + (start $~start) + (func $~lib/rt/itcms/visitRoots + (local $0 i32) + (local $1 i32) + i32.const 1248 + call $~lib/rt/itcms/__visit + i32.const 2000 + call $~lib/rt/itcms/__visit + i32.const 2128 + call $~lib/rt/itcms/__visit + i32.const 1056 + call $~lib/rt/itcms/__visit + global.get $~lib/rt/itcms/pinSpace + local.tee $1 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|0 + local.get $0 + local.get $1 + i32.ne + if + local.get $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 160 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|0 + end + end + ) + (func $~lib/rt/itcms/Object#makeGray (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/rt/itcms/iter + i32.eq + if + local.get $0 + i32.load offset=8 + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 148 + i32.const 30 + call $~lib/builtins/abort + unreachable + end + local.get $1 + global.set $~lib/rt/itcms/iter + end + block $__inlined_func$~lib/rt/itcms/Object#unlink$523 + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.tee $1 + i32.eqz + if + local.get $0 + i32.load offset=8 + i32.eqz + local.get $0 + i32.const 36860 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 128 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + br $__inlined_func$~lib/rt/itcms/Object#unlink$523 + end + local.get $0 + i32.load offset=8 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 132 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.store offset=8 + local.get $2 + local.get $1 + local.get $2 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + end + global.get $~lib/rt/itcms/toSpace + local.set $2 + local.get $0 + i32.load offset=12 + local.tee $1 + i32.const 2 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $1 + i32.const 3920 + i32.load + i32.gt_u + if + i32.const 1248 + i32.const 1312 + i32.const 21 + i32.const 28 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 2 + i32.shl + i32.const 3924 + i32.add + i32.load + i32.const 32 + i32.and + end + local.set $3 + local.get $2 + i32.load offset=8 + local.set $1 + local.get $0 + global.get $~lib/rt/itcms/white + i32.eqz + i32.const 2 + local.get $3 + select + local.get $2 + i32.or + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $1 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + ) + (func $~lib/rt/itcms/__visit (param $0 i32) + local.get $0 + i32.eqz + if + return + end + global.get $~lib/rt/itcms/white + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + call $~lib/rt/itcms/Object#makeGray + global.get $~lib/rt/itcms/visitCount + i32.const 1 + i32.add + global.set $~lib/rt/itcms/visitCount + end + ) + (func $~lib/rt/tlsf/removeBlock (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 1392 + i32.const 268 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $3 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 270 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if (result i32) + local.get $3 + i32.const 4 + i32.shr_u + else + i32.const 31 + i32.const 1073741820 + local.get $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.clz + i32.sub + local.tee $4 + i32.const 7 + i32.sub + local.set $2 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $3 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 284 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=8 + local.set $5 + local.get $1 + i32.load offset=4 + local.tee $4 + if + local.get $4 + local.get $5 + i32.store offset=8 + end + local.get $5 + if + local.get $5 + local.get $4 + i32.store offset=4 + end + local.get $1 + local.get $0 + local.get $2 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=96 + i32.eq + if + local.get $1 + local.get $5 + i32.store offset=96 + local.get $5 + i32.eqz + if + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + i32.const -2 + local.get $3 + i32.rotl + i32.and + local.set $3 + local.get $1 + local.get $3 + i32.store offset=4 + local.get $3 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const -2 + local.get $2 + i32.rotl + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 201 + i32.const 14 + 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 1392 + i32.const 203 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $3 + i32.const 4 + i32.add + local.get $2 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $2 + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $1 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 221 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $6 + i32.const 4 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $3 + i32.store + end + local.get $4 + local.get $2 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 12 + i32.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 233 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + local.get $1 + i32.const 4 + i32.add + local.get $2 + i32.add + i32.ne + if + i32.const 0 + i32.const 1392 + i32.const 234 + i32.const 14 + 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 + else + i32.const 31 + i32.const 1073741820 + local.get $2 + local.get $2 + i32.const 1073741820 + i32.ge_u + select + local.tee $2 + i32.clz + i32.sub + local.tee $3 + i32.const 7 + i32.sub + local.set $5 + local.get $2 + local.get $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + end + local.tee $2 + i32.const 16 + i32.lt_u + local.get $5 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 251 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $3 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=8 + local.get $3 + if + local.get $3 + local.get $1 + i32.store offset=4 + end + local.get $0 + local.get $5 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $5 + i32.shl + i32.or + i32.store + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $0 + local.get $0 + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (param $0 i32) (param $1 i32) (param $2 i64) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $2 + local.get $1 + i64.extend_i32_u + i64.lt_u + if + i32.const 0 + i32.const 1392 + i32.const 382 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + local.set $1 + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $3 + i32.const 4 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 389 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + local.tee $5 + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $5 + local.set $1 + end + else + local.get $0 + i32.const 1572 + i32.add + local.get $1 + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 402 + i32.const 5 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + i32.wrap_i64 + i32.const -16 + i32.and + local.get $1 + i32.sub + local.tee $3 + i32.const 20 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + i32.const 2 + i32.store + local.get $0 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/initialize + (local $0 i32) + (local $1 i32) + memory.size + local.tee $1 + i32.const 0 + i32.le_s + if (result i32) + i32.const 1 + local.get $1 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 36864 + i32.const 0 + i32.store + i32.const 38432 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $0 + i32.const 23 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 36864 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 16 + i32.lt_u + if + local.get $0 + i32.const 4 + i32.shl + local.get $1 + i32.add + i32.const 2 + i32.shl + i32.const 36864 + i32.add + i32.const 0 + i32.store offset=96 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end + end + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 + end + end + i32.const 36864 + i32.const 38436 + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + i32.const 36864 + global.set $~lib/rt/tlsf/ROOT + ) + (func $~lib/rt/itcms/step (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + block $break|0 + block $case2|0 + block $case1|0 + block $case0|0 + global.get $~lib/rt/itcms/state + br_table $case0|0 $case1|0 $case2|0 $break|0 + end + i32.const 1 + global.set $~lib/rt/itcms/state + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/white + i32.eqz + local.set $1 + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|1 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + global.set $~lib/rt/itcms/iter + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + i32.const 0 + global.set $~lib/rt/itcms/visitCount + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + global.get $~lib/rt/itcms/visitCount + return + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|1 + end + end + i32.const 0 + global.set $~lib/rt/itcms/visitCount + call $~lib/rt/itcms/visitRoots + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 36860 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/rt/itcms/iter + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + loop $while-continue|2 + local.get $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $1 + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 3 + i32.and + i32.ne + if + local.get $0 + local.get $2 + i32.const -4 + i32.and + local.get $1 + i32.or + i32.store offset=4 + local.get $0 + i32.const 20 + i32.add + call $~lib/rt/__visit_members + end + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + local.set $0 + br $while-continue|2 + end + end + global.get $~lib/rt/itcms/fromSpace + local.set $0 + global.get $~lib/rt/itcms/toSpace + global.set $~lib/rt/itcms/fromSpace + local.get $0 + global.set $~lib/rt/itcms/toSpace + local.get $1 + global.set $~lib/rt/itcms/white + local.get $0 + i32.load offset=4 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + i32.const 2 + global.set $~lib/rt/itcms/state + end + global.get $~lib/rt/itcms/visitCount + return + end + global.get $~lib/rt/itcms/iter + local.tee $0 + global.get $~lib/rt/itcms/toSpace + i32.ne + if + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -4 + i32.and + global.set $~lib/rt/itcms/iter + global.get $~lib/rt/itcms/white + i32.eqz + local.get $1 + i32.const 3 + i32.and + i32.ne + if + i32.const 0 + i32.const 1120 + i32.const 229 + i32.const 20 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 36860 + i32.lt_u + if + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + else + global.get $~lib/rt/itcms/total + local.get $0 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.sub + global.set $~lib/rt/itcms/total + local.get $0 + i32.const 4 + i32.add + local.tee $0 + i32.const 36860 + i32.ge_u + if + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 4 + i32.sub + local.set $2 + local.get $0 + i32.const 15 + i32.and + i32.const 1 + local.get $0 + select + if (result i32) + i32.const 1 + else + local.get $2 + i32.load + i32.const 1 + i32.and + end + if + i32.const 0 + i32.const 1392 + i32.const 562 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load + i32.const 1 + i32.or + i32.store + local.get $2 + call $~lib/rt/tlsf/insertBlock + end + end + i32.const 10 + return + end + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=4 + global.get $~lib/rt/itcms/toSpace + global.get $~lib/rt/itcms/toSpace + i32.store offset=8 + i32.const 0 + global.set $~lib/rt/itcms/state + end + i32.const 0 + ) + (func $~lib/rt/tlsf/searchBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + else + local.get $1 + i32.const 536870910 + i32.lt_u + if + 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 + 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 + local.set $2 + end + local.get $1 + i32.const 16 + i32.lt_u + local.get $2 + i32.const 23 + i32.lt_u + i32.and + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 334 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const -1 + local.get $1 + i32.shl + i32.and + local.tee $1 + if (result i32) + local.get $0 + local.get $1 + i32.ctz + local.get $2 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + 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 $0 + local.get $1 + i32.ctz + local.tee $1 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 347 + i32.const 18 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $2 + i32.ctz + local.get $1 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + else + i32.const 0 + end + end + ) + (func $~lib/rt/tlsf/allocateBlock (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.const 1073741820 + i32.gt_u + if + i32.const 1056 + i32.const 1392 + i32.const 461 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 12 + i32.le_u + if (result i32) + i32.const 12 + else + local.get $1 + i32.const 19 + i32.add + i32.const -16 + i32.and + i32.const 4 + i32.sub + end + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + memory.size + local.tee $1 + local.get $3 + i32.const 256 + i32.ge_u + if (result i32) + local.get $3 + i32.const 536870910 + i32.lt_u + if (result i32) + local.get $3 + i32.const 1 + i32.const 27 + local.get $3 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $3 + end + else + local.get $3 + end + i32.const 4 + local.get $0 + i32.load offset=1568 + local.get $1 + i32.const 16 + i32.shl + i32.const 4 + i32.sub + i32.ne + i32.shl + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $2 + local.get $1 + local.get $2 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $2 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $1 + i32.const 16 + i32.shl + memory.size + i64.extend_i32_s + i64.const 16 + i64.shl + call $~lib/rt/tlsf/addMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $1 + i32.eqz + if + i32.const 0 + i32.const 1392 + i32.const 499 + i32.const 16 + call $~lib/builtins/abort + unreachable + end + end + local.get $3 + local.get $1 + i32.load + i32.const -4 + i32.and + i32.gt_u + if + i32.const 0 + i32.const 1392 + i32.const 501 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/removeBlock + local.get $1 + i32.load + local.set $4 + local.get $3 + i32.const 4 + i32.add + i32.const 15 + i32.and + if + i32.const 0 + i32.const 1392 + i32.const 361 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const -4 + i32.and + local.get $3 + i32.sub + local.tee $2 + i32.const 16 + i32.ge_u + if + local.get $1 + local.get $3 + local.get $4 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $3 + i32.add + local.tee $3 + local.get $2 + i32.const 4 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $3 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $4 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 4 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $0 + local.get $0 + i32.load + i32.const -3 + i32.and + i32.store + end + local.get $1 + ) + (func $~lib/rt/itcms/__new (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + local.get $0 + i32.const 1073741804 + i32.ge_u + if + i32.const 1056 + i32.const 1120 + i32.const 261 + i32.const 31 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.ge_u + if + block $__inlined_func$~lib/rt/itcms/interrupt$69 + i32.const 2048 + local.set $2 + loop $do-loop|0 + local.get $2 + call $~lib/rt/itcms/step + i32.sub + local.set $2 + global.get $~lib/rt/itcms/state + i32.eqz + if + global.get $~lib/rt/itcms/total + i64.extend_i32_u + i64.const 200 + i64.mul + i64.const 100 + i64.div_u + i32.wrap_i64 + i32.const 1024 + i32.add + global.set $~lib/rt/itcms/threshold + br $__inlined_func$~lib/rt/itcms/interrupt$69 + end + local.get $2 + i32.const 0 + i32.gt_s + br_if $do-loop|0 + end + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/total + global.get $~lib/rt/itcms/threshold + i32.sub + i32.const 1024 + i32.lt_u + i32.const 10 + i32.shl + i32.add + global.set $~lib/rt/itcms/threshold + end + end + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + local.get $0 + i32.const 16 + i32.add + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=12 + local.get $2 + local.get $0 + i32.store offset=16 + global.get $~lib/rt/itcms/fromSpace + local.tee $1 + i32.load offset=8 + local.set $3 + local.get $2 + local.get $1 + global.get $~lib/rt/itcms/white + i32.or + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=8 + local.get $3 + local.get $2 + local.get $3 + i32.load offset=4 + i32.const 3 + i32.and + i32.or + i32.store offset=4 + local.get $1 + local.get $2 + i32.store offset=8 + global.get $~lib/rt/itcms/total + local.get $2 + i32.load + i32.const -4 + i32.and + i32.const 4 + i32.add + i32.add + global.set $~lib/rt/itcms/total + local.get $2 + i32.const 20 + i32.add + local.tee $1 + i32.const 0 + local.get $0 + memory.fill + local.get $1 + ) + (func $closure-class/Counter#getIncrementClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 1 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Counter#getCountClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 2 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Calculator#getOperationClosure (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 4 + i32.add + local.tee $3 + local.get $1 + i32.store + local.get $4 + local.get $2 + i32.store offset=8 + local.get $4 + local.get $0 + i32.store offset=12 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 7 + i32.store + local.get $0 + local.get $3 + i32.store offset=4 + local.get $0 + ) + (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + local.get $1 + i32.eqz + if + return + end + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 1120 + i32.const 295 + i32.const 14 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/rt/itcms/white + local.get $1 + i32.const 20 + i32.sub + local.tee $1 + i32.load offset=4 + i32.const 3 + i32.and + i32.eq + if + local.get $0 + i32.const 20 + i32.sub + local.tee $0 + i32.load offset=4 + i32.const 3 + i32.and + local.tee $3 + global.get $~lib/rt/itcms/white + i32.eqz + i32.eq + if + local.get $0 + local.get $1 + local.get $2 + select + call $~lib/rt/itcms/Object#makeGray + else + global.get $~lib/rt/itcms/state + i32.const 1 + i32.eq + local.get $3 + i32.const 3 + i32.eq + i32.and + if + local.get $1 + call $~lib/rt/itcms/Object#makeGray + end + end + end + ) + (func $closure-class/DataProcessor#getProcessorClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 13 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/testBoxMap~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 1 + i32.shl + ) + (func $closure-class/testBoxMap~anonymous|1 (param $0 i32) (result i32) + local.get $0 + i32.const 3 + i32.add + ) + (func $closure-class/testBoxMap~anonymous|2 (param $0 i32) (result i32) + local.get $0 + local.get $0 + i32.mul + ) + (func $closure-class/testBoxFlatMap~anonymous|0 (param $0 i32) (result i32) + local.get $0 + i32.const 10 + i32.mul + call $closure-class/Box#constructor + ) + (func $closure-class/ChainableCounter#getAddClosure (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $3 + i32.const 4 + i32.add + local.tee $2 + local.get $1 + i32.store + local.get $3 + local.get $0 + i32.store offset=8 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 35 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Task#getThenClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 36 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 37 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Task#getCompleteClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 38 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/testTaskCallbacks~anonymous|0 (param $0 i32) + global.get $$~lib/__closure_env + local.get $0 + i32.const 1 + i32.shl + i32.store + ) + (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $0 i32) + global.get $$~lib/__closure_env + local.get $0 + i32.store + ) + (func $closure-class/testResourceManagement~anonymous|0 (result i32) + i32.const 42 + ) + (func $closure-class/testResourceManagement~anonymous|1 (result i32) + i32.const 10 + ) + (func $closure-class/testResourceManagement~anonymous|2 (result i32) + i32.const 20 + ) + (func $closure-class/testResourceManagement~anonymous|3 (result i32) + i32.const 30 + ) + (func $closure-class/TreeNode#getSumClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 49 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/TreeNode#getDepthClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 50 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Range#getHasNextClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 51 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $closure-class/Range#getNextClosure (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $0 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 52 + i32.store + local.get $0 + local.get $1 + i32.store offset=4 + local.get $0 + ) + (func $start:closure-class + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + memory.size + i32.const 16 + i32.shl + i32.const 36860 + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 1172 + i32.const 1168 + i32.store + i32.const 1176 + i32.const 1168 + i32.store + i32.const 1168 + global.set $~lib/rt/itcms/pinSpace + i32.const 1204 + i32.const 1200 + i32.store + i32.const 1208 + i32.const 1200 + i32.store + i32.const 1200 + global.set $~lib/rt/itcms/toSpace + i32.const 1348 + i32.const 1344 + i32.store + i32.const 1352 + i32.const 1344 + i32.store + i32.const 1344 + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getIncrementClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getCountClosure + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 45 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + call $closure-class/Counter#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getIncrementClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Counter#getIncrementClosure + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Counter#getCountClosure + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Counter#getCountClosure + local.tee $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=32 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=36 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=40 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=44 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=48 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.mul + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=52 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 32 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 62 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testBankAccount + i32.const 4 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 131 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 5 + i32.const 0 + call $closure-class/Calculator#getOperationClosure + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 2 + i32.const 1 + call $closure-class/Calculator#getOperationClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 3 + i32.const 2 + call $closure-class/Calculator#getOperationClosure + local.tee $3 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=32 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 175 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 12 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 10 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 8 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 9 + i32.store + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 230 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 20 + local.get $1 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 233 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 237 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 40 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 13 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 14 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1808 + i32.store offset=8 + local.get $0 + i32.const 1808 + i32.store + local.get $0 + i32.const 1808 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 1840 + i32.store offset=8 + local.get $0 + i32.const 1840 + i32.store offset=8 + local.get $0 + i32.const 1840 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 10 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 11 + i32.store + local.get $4 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 12 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 292 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1840 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 293 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=36 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 40 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 5 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 300 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testEventEmitterPattern + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 361 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 44 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 19 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2256 + i32.store + local.get $1 + i32.const 2256 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2288 + i32.store offset=4 + local.get $1 + i32.const 2288 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 2288 + i32.store offset=8 + local.get $1 + i32.const 2288 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 14 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 15 + i32.store + local.get $4 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 20 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 16 + i32.store + local.get $5 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $1 + i32.store offset=4 + i32.const 8 + i32.const 15 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 17 + i32.store + local.get $1 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $1 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 2576 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 2624 + local.get $4 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=32 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 2656 + local.get $5 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + call_indirect (type $0) + local.tee $0 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2704 + call $~lib/string/String.__eq + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + call $closure-class/testStateMachine + if + i32.const 0 + i32.const 1520 + i32.const 511 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testObservable + i32.const 43 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 592 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 32 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/Box#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 29 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 28 + i32.store + local.get $3 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 29 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 3200 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3200 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3232 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + i32.const 3264 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3264 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 169 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 637 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/Box#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 31 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 33 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3328 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + global.get $~lib/memory/__stack_pointer + i32.const 3328 + local.get $0 + i32.load + call_indirect (type $2) + local.tee $0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 648 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 36 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 33 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 5 + call $closure-class/ChainableCounter#getAddClosure + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 10 + call $closure-class/ChainableCounter#getAddClosure + local.tee $2 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $4 + i32.const 2 + i32.store offset=4 + local.get $4 + local.get $1 + i32.store offset=8 + i32.const 8 + i32.const 34 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 36 + i32.store + local.get $5 + local.get $4 + i32.const 4 + i32.add + i32.store offset=4 + local.get $5 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 36 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 35 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 698 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.set $0 + global.get $~lib/memory/__stack_pointer + call $closure-class/Task#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getThenClosure + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getCompleteClosure + local.tee $3 + i32.store offset=12 + local.get $0 + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 39 + i32.store + local.get $4 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=16 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + local.get $2 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=4 + if + i32.const 0 + i32.const 1520 + i32.const 749 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=20 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 21 + local.get $3 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=4 + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 753 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load8_u + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 754 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 758 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + local.set $0 + global.get $~lib/memory/__stack_pointer + call $closure-class/Task#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getThenClosure + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $closure-class/Task#getCompleteClosure + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 50 + local.get $1 + i32.load + call_indirect (type $1) + local.get $0 + i32.const 0 + i32.store offset=4 + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 40 + i32.store + local.get $1 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + local.get $2 + i32.load + call_indirect (type $1) + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 50 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 776 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-class/testResourceManagement + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 855 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 1 + call $closure-class/TreeNode#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $closure-class/TreeNode#constructor + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $closure-class/TreeNode#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + call $closure-class/TreeNode#constructor + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $closure-class/TreeNode#constructor + local.tee $4 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 6 + call $closure-class/TreeNode#constructor + local.tee $5 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $0 + local.get $1 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=28 + local.get $0 + local.get $2 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $1 + local.get $3 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $1 + local.get $4 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=28 + local.get $2 + local.get $5 + call $closure-class/TreeNode#addChild + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/TreeNode#getSumClosure + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/TreeNode#getDepthClosure + local.tee $0 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=40 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 21 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 927 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=44 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 928 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 100 + i32.mul + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + local.get $1 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2103 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 932 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 5 + i32.const 1 + call $closure-class/Range#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getHasNextClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getNextClosure + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $while-continue|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 990 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + i32.const 10 + i32.const 0 + i32.const -2 + call $closure-class/Range#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getHasNextClosure + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $closure-class/Range#getNextClosure + local.tee $2 + i32.store offset=12 + i32.const 0 + local.set $0 + loop $while-continue|01 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + br $while-continue|01 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 1005 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~lib/rt/__visit_members (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + block $folding-inner4 + block $folding-inner3 + block $folding-inner2 + block $folding-inner1 + block $folding-inner0 + block $invalid + block $closure-class/Range + block $closure-class/TreeNode + block $closure-class/Resource + block $closure-class/ChainableCounter + block $closure-class/Box + block $closure-class/ObserverState + block $closure-class/Observable + block $closure-class/StateMachine + block $closure-class/QueryBuilder + block $closure-class/DataProcessor + block $closure-class/Dog + block $closure-class/Inner + block $closure-class/Calculator + block $closure-class/BankAccount + block $closure-class/Counter + block $~lib/string/String + block $~lib/arraybuffer/ArrayBuffer + block $~lib/object/Object + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $~lib/object/Object $~lib/arraybuffer/ArrayBuffer $~lib/string/String $folding-inner2 $closure-class/Counter $folding-inner0 $folding-inner0 $closure-class/BankAccount $folding-inner0 $folding-inner0 $closure-class/Calculator $folding-inner2 $closure-class/Inner $closure-class/Dog $folding-inner2 $folding-inner0 $folding-inner2 $folding-inner1 $closure-class/DataProcessor $closure-class/QueryBuilder $folding-inner0 $closure-class/StateMachine $folding-inner0 $closure-class/Observable $folding-inner1 $folding-inner0 $closure-class/ObserverState $folding-inner0 $closure-class/Box $folding-inner0 $folding-inner0 $folding-inner0 $folding-inner0 $closure-class/ChainableCounter $folding-inner0 $folding-inner3 $folding-inner0 $closure-class/Resource $folding-inner0 $closure-class/TreeNode $folding-inner1 $closure-class/Range $invalid + end + return + end + return + end + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + br $folding-inner3 + end + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + br $folding-inner3 + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + return + end + return + end + return + end + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + return + end + return + end + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.const 2 + i32.shl + i32.add + local.set $2 + loop $while-continue|0 + local.get $1 + local.get $2 + i32.lt_u + if + local.get $1 + i32.load + local.tee $3 + if + local.get $3 + call $~lib/rt/itcms/__visit + end + local.get $1 + i32.const 4 + i32.add + local.set $1 + br $while-continue|0 + end + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + local.get $0 + i32.load + call $~lib/rt/itcms/__visit + return + end + local.get $0 + i32.load offset=8 + call $~lib/rt/itcms/__visit + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $~start + call $start:closure-class + ) + (func $closure-class/Counter#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/Counter#getIncrementClosure~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Counter#getCountClosure~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getDepositClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store offset=4 + local.get $3 + local.get $0 + local.get $1 + i32.load + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/BankAccount#getWithdrawClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $2 + i32.store + local.get $0 + local.get $2 + i32.load + i32.le_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load + local.get $0 + i32.sub + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/BankAccount#getTransactionCountClosure~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testBankAccount (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 68 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 7 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 100 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $1 + local.get $2 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 3 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $4 + local.get $2 + i32.store + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 4 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 + local.get $2 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 5 + i32.store + local.get $1 + local.get $5 + i32.store offset=4 + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 + local.get $2 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 6 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 50 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=28 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 150 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 117 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 30 + local.get $0 + i32.load + call_indirect (type $2) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 119 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=36 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 120 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 200 + local.get $0 + i32.load + call_indirect (type $2) + if + i32.const 0 + i32.const 1520 + i32.const 122 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=44 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 123 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=48 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 124 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=52 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 100 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=56 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 220 + local.get $0 + i32.load + call_indirect (type $2) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 127 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=60 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 1000 + i32.mul + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=64 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 68 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Calculator#getOperationClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.tee $0 + i32.load offset=4 + local.tee $1 + if + local.get $1 + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load + i32.sub + i32.store + else + local.get $0 + i32.load offset=4 + i32.const 2 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load + i32.mul + i32.store + end + end + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.load + local.get $0 + i32.load + i32.add + i32.store + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=8 + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Outer#getComputeClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.mul + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Outer#getInnerSetterClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Animal#getAgeIncrementClosure~anonymous|0 + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Dog#getBreedClosure~anonymous|0 (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__eq (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + local.get $0 + local.get $1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + block $folding-inner0 + local.get $1 + i32.eqz + local.get $0 + i32.eqz + i32.or + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $3 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + i32.ne + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $3 + local.tee $0 + i32.const 4 + i32.ge_u + if (result i32) + local.get $2 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.or + else + i32.const 1 + end + i32.eqz + if + loop $do-loop|0 + local.get $2 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $2 + i32.const 8 + i32.add + local.set $2 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $0 + i32.const 4 + i32.sub + local.tee $0 + i32.const 4 + i32.ge_u + br_if $do-loop|0 + end + end + end + block $__inlined_func$~lib/util/string/compareImpl$205 + loop $while-continue|1 + local.get $0 + local.tee $3 + i32.const 1 + i32.sub + local.set $0 + local.get $3 + if + local.get $2 + i32.load16_u + local.tee $5 + local.get $1 + i32.load16_u + local.tee $4 + i32.sub + local.set $3 + local.get $4 + local.get $5 + i32.ne + br_if $__inlined_func$~lib/util/string/compareImpl$205 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 + end + end + i32.const 0 + local.set $3 + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.eqz + return + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $~lib/array/Array<%28i32%29=>void>#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + local.get $0 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $0 + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/DataProcessor#constructor (result i32) + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 18 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/DataProcessor#getProcessorClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $3 + i32.store offset=4 + local.get $1 + local.get $3 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store + local.get $1 + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $2 + i32.store offset=4 + local.get $1 + local.get $0 + local.get $2 + i32.load offset=8 + i32.add + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#push (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $5 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $2 + local.get $0 + i32.load offset=8 + local.tee $3 + i32.const 2 + i32.shr_u + i32.gt_u + if + local.get $2 + i32.const 268435455 + i32.gt_u + if + i32.const 2000 + i32.const 2048 + i32.const 19 + i32.const 48 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + block $__inlined_func$~lib/rt/itcms/__renew$501 + i32.const 1073741820 + local.get $3 + i32.const 1 + i32.shl + local.tee $3 + local.get $3 + i32.const 1073741820 + i32.ge_u + select + local.tee $3 + i32.const 8 + local.get $2 + local.get $2 + i32.const 8 + i32.le_u + select + i32.const 2 + i32.shl + local.tee $2 + local.get $2 + local.get $3 + i32.lt_u + select + local.tee $4 + local.get $0 + i32.load + local.tee $3 + i32.const 20 + i32.sub + local.tee $7 + i32.load + i32.const -4 + i32.and + i32.const 16 + i32.sub + i32.le_u + if + local.get $7 + local.get $4 + i32.store offset=16 + local.get $3 + local.set $2 + br $__inlined_func$~lib/rt/itcms/__renew$501 + end + local.get $4 + local.get $7 + i32.load offset=12 + call $~lib/rt/itcms/__new + local.tee $2 + local.get $3 + local.get $4 + local.get $7 + i32.load offset=16 + local.tee $7 + local.get $4 + local.get $7 + i32.lt_u + select + memory.copy + end + local.get $2 + local.get $3 + i32.ne + if + local.get $0 + local.get $2 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + end + local.get $0 + local.get $4 + i32.store offset=8 + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $1 + i32.store + local.get $0 + local.get $1 + i32.const 1 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + local.get $5 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/EventEmitter#addListener (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#get:length (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/array/Array<%28i32%29=>void>#__get (param $0 i32) (param $1 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.load offset=12 + i32.ge_u + if + i32.const 1248 + i32.const 2048 + i32.const 114 + i32.const 42 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.tee $0 + i32.store offset=4 + local.get $0 + i32.eqz + if + i32.const 2128 + i32.const 2048 + i32.const 118 + i32.const 40 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/EventEmitter#emit (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + local.get $3 + i32.load + call_indirect (type $1) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testEventEmitterPattern (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 16 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + call $closure-class/DataProcessor#constructor + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + call $closure-class/DataProcessor#constructor + local.tee $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=20 + local.get $0 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $1 + local.get $3 + call $closure-class/EventEmitter#addListener + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + call $closure-class/DataProcessor#getProcessorClosure + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $1 + local.get $3 + call $closure-class/EventEmitter#addListener + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 10 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 20 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.const 30 + call $closure-class/EventEmitter#emit + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 352 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 353 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=8 + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 354 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=8 + i32.const 60 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 355 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=4 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 356 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=4 + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 357 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=12 + local.get $2 + i32.load offset=8 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/QueryBuilder#getSelectClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getFromClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/QueryBuilder#getWhereClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/string/String.__concat (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + local.get $0 + local.tee $2 + i32.store + local.get $0 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + block $__inlined_func$~lib/string/String#concat$530 + local.get $1 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const -2 + i32.and + local.tee $4 + local.get $3 + i32.add + local.tee $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 2288 + local.set $0 + br $__inlined_func$~lib/string/String#concat$530 + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 2 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $2 + local.get $3 + memory.copy + local.get $0 + local.get $3 + i32.add + local.get $1 + local.get $4 + memory.copy + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/QueryBuilder#getBuildClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $2 + i32.store offset=12 + i32.const 2416 + local.get $2 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $2 + i32.const 2464 + call $~lib/string/String.__concat + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load offset=8 + local.tee $2 + i32.store + local.get $2 + i32.const 20 + i32.sub + i32.load offset=16 + i32.const 1 + i32.shr_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store offset=8 + i32.const 2496 + local.get $1 + call $~lib/string/String.__concat + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/string/String.__concat + local.tee $0 + i32.store offset=20 + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/StateMachine#getStartClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 2 + i32.eq + else + i32.const 1 + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getPauseClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.eq + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getStopClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 1 + i32.eq + if (result i32) + i32.const 1 + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + i32.const 2 + i32.eq + end + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/StateMachine#getResetClosure~anonymous|0 + (local $0 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testStateMachine (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 84 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 21 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $4 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 18 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $3 + local.get $4 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 19 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 + local.get $4 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 20 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $6 + local.get $4 + i32.store + i32.const 8 + i32.const 5 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 21 + i32.store + local.get $3 + local.get $6 + i32.store offset=4 + local.get $3 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $6 + local.get $4 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 22 + i32.store + local.get $4 + local.get $6 + i32.store offset=4 + local.get $4 + i32.store offset=24 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 488 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=32 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 490 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=36 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 491 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 493 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=44 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 495 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=48 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 496 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 498 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=56 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 499 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=60 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 501 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=64 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 502 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=68 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 504 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=72 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $3) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=76 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 507 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=80 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 84 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Observable#getSubscribeClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $1 + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Observable#getSetClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $3 + i32.store + local.get $3 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $4 + i32.store + local.get $4 + local.get $0 + i32.store + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $4 + i32.store offset=8 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + local.get $0 + local.get $4 + i32.load + call_indirect (type $4) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getCountObserver~anonymous|0 (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $1 + i32.load + i32.const 1 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ObserverState#getDiffObserver~anonymous|0 (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $3 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $3 + i32.store offset=4 + local.get $2 + local.get $3 + i32.load offset=4 + local.get $1 + local.get $0 + i32.sub + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testObservable (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 23 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 24 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + local.get $2 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $2 + local.get $3 + i32.store + local.get $2 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + local.get $2 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $1 + i32.store + i32.const 8 + i32.const 25 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 23 + i32.store + local.get $3 + local.get $2 + i32.store offset=4 + local.get $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $4 + local.get $1 + i32.store + i32.const 8 + i32.const 8 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 24 + i32.store + local.get $0 + local.get $4 + i32.store offset=4 + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $4 + local.get $1 + i32.store + i32.const 8 + i32.const 6 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 25 + i32.store + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 26 + call $~lib/rt/itcms/__new + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $4 + call $~lib/object/Object#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $4 + i32.store + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 26 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=24 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=28 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $4 + i32.store + i32.const 8 + i32.const 27 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 27 + i32.store + local.get $5 + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=32 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + local.get $3 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=36 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 10 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=40 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 25 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=44 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 20 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 586 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 587 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 588 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=52 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load + i32.add + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/Box#constructor (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.const 28 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + ) + (func $closure-class/Box#getMapClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $2 + i32.store offset=8 + local.get $2 + i32.load + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + local.get $2 + local.get $0 + i32.load + call_indirect (type $2) + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Box#getFlatMapClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + i32.load + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ChainableCounter#getAddClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.load + local.get $1 + i32.load + i32.add + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/ChainableCounter#getMultiplyClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load offset=4 + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.load + local.get $1 + i32.load + i32.mul + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#constructor (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 35 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + call $~lib/object/Object#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + call $~lib/array/Array<%28i32%29=>void>#constructor + local.set $1 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.store offset=8 + local.get $0 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/Task#getThenClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $2 + i32.store + local.get $2 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $1) + else + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load offset=8 + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $1 + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#push + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Task#getCompleteClosure~anonymous|0 (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $3 + i32.store + local.get $3 + i32.const 1 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store + local.get $3 + local.get $0 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $2 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=8 + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + local.get $2 + call $~lib/array/Array<%28i32%29=>void>#__get + local.tee $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + local.get $3 + i32.load + call_indirect (type $1) + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Resource#getAcquireClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load8_u + i32.eqz + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 1 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/Resource#getReleaseClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 0 + ) + (func $closure-class/Resource#getUseClosure~anonymous|0 (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $2 + i32.store + local.get $2 + i32.load8_u + if + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const -1 + ) + (func $closure-class/Resource#getUseCount (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/testResourceManagement (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 56 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 37 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + call $~lib/object/Object#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $2 + local.get $3 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 41 + i32.store + local.get $0 + local.get $2 + i32.store offset=4 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $4 + local.get $3 + i32.store + i32.const 8 + i32.const 22 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 42 + i32.store + local.get $1 + local.get $4 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 4 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $5 + local.get $3 + i32.store + i32.const 8 + i32.const 38 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 43 + i32.store + local.get $2 + local.get $5 + i32.store offset=4 + local.get $2 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 3648 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=20 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3648 + local.get $2 + i32.load + call_indirect (type $2) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 833 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=24 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 836 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 837 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3680 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=32 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3680 + local.get $2 + i32.load + call_indirect (type $2) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 840 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3712 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=36 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3712 + local.get $2 + i32.load + call_indirect (type $2) + i32.const 20 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 841 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3744 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=40 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3744 + local.get $2 + i32.load + call_indirect (type $2) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 842 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Resource#getUseCount + i32.const 3 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 844 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=44 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.eqz + if + i32.const 0 + i32.const 1520 + i32.const 847 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + if + i32.const 0 + i32.const 1520 + i32.const 848 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 3776 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=52 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3776 + local.get $2 + i32.load + call_indirect (type $2) + i32.const -1 + i32.ne + if + i32.const 0 + i32.const 1520 + i32.const 851 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + call $closure-class/Resource#getUseCount + global.get $~lib/memory/__stack_pointer + i32.const 56 + i32.add + global.set $~lib/memory/__stack_pointer + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/TreeNode#constructor (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + block $folding-inner0 + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 39 + call $~lib/rt/itcms/__new + local.tee $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + br_if $folding-inner0 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.const 40 + call $~lib/rt/itcms/__new + local.tee $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store + local.get $1 + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 32 + i32.const 1 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=12 + local.get $1 + local.get $3 + i32.store + local.get $1 + local.get $3 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 32 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.const 0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=4 + local.get $2 + local.get $1 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + return + end + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + ) + (func $closure-class/TreeNode#addChild (param $0 i32) (param $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $0 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#push + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/TreeNode#getSumClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $2 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load + local.set $0 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load offset=4 + local.tee $3 + i32.store + local.get $3 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $1 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.load + local.tee $4 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.load offset=4 + local.tee $4 + i32.store offset=4 + local.get $4 + local.get $1 + call $~lib/array/Array<%28i32%29=>void>#__get + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $closure-class/TreeNode#getSumClosure + local.tee $3 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) + (func $closure-class/TreeNode#getDepthClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $3 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#get:length + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 1 + return + end + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store + local.get $0 + call $~lib/array/Array<%28i32%29=>void>#get:length + local.get $4 + i32.gt_s + if + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.load + local.tee $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load offset=4 + local.tee $0 + i32.store offset=4 + local.get $0 + local.get $4 + call $~lib/array/Array<%28i32%29=>void>#__get + local.set $0 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 + call $closure-class/TreeNode#getDepthClosure + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + local.get $0 + i32.load + call_indirect (type $0) + local.tee $0 + i32.lt_s + if + local.get $0 + local.set $1 + end + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + i32.add + ) + (func $closure-class/Range#constructor (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.const 41 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + local.get $2 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $3 + ) + (func $closure-class/Range#getHasNextClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load offset=8 + i32.const 0 + i32.gt_s + if (result i32) + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.lt_s + else + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $1 + i32.store + local.get $1 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + i32.gt_s + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-class/Range#getNextClosure~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.tee $0 + i32.store + local.get $0 + i32.load + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $3 + i32.store offset=4 + local.get $3 + i32.load + local.set $3 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.load + local.tee $1 + i32.store offset=4 + local.get $0 + local.get $3 + local.get $1 + i32.load offset=8 + i32.add + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $~lib/object/Object#constructor (param $0 i32) (result i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4092 + i32.lt_s + if + i32.const 36880 + i32.const 36928 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $0 + i32.eqz + if + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 0 + call $~lib/rt/itcms/__new + local.tee $0 + i32.store + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) +) diff --git a/tests/compiler/closure-class.ts b/tests/compiler/closure-class.ts new file mode 100644 index 0000000000..67858e7258 --- /dev/null +++ b/tests/compiler/closure-class.ts @@ -0,0 +1,1010 @@ +// ============================================================================= +// CLOSURE CLASS TEST - Complex class and "this" closure testing for AssemblyScript +// ============================================================================= + +// ============================================================================= +// SECTION 1: Basic Method Closures Capturing "this" via local variable +// ============================================================================= + +class Counter { + count: i32 = 0; + + increment(): void { + this.count++; + } + + getIncrementClosure(): () => void { + let self = this; + return (): void => { + self.count++; + }; + } + + getCount(): i32 { + return this.count; + } + + getCountClosure(): () => i32 { + let self = this; + return (): i32 => self.count; + } +} + +// Test 1.1: Basic this capture in closure +function testBasicThisCapture(): i32 { + let c = new Counter(); + let inc = c.getIncrementClosure(); + let get = c.getCountClosure(); + + inc(); + inc(); + inc(); + + return get(); +} +assert(testBasicThisCapture() == 3); + +// Test 1.2: Multiple instances with their own closures +function testMultipleInstances(): i32 { + let c1 = new Counter(); + let c2 = new Counter(); + + let inc1 = c1.getIncrementClosure(); + let inc2 = c2.getIncrementClosure(); + let get1 = c1.getCountClosure(); + let get2 = c2.getCountClosure(); + + inc1(); inc1(); inc1(); // c1.count = 3 + inc2(); inc2(); // c2.count = 2 + + return get1() * 10 + get2(); // 30 + 2 = 32 +} +assert(testMultipleInstances() == 32); + +// ============================================================================= +// SECTION 2: Complex State Management with Closures +// ============================================================================= + +class BankAccount { + private balance: i32; + private transactionCount: i32 = 0; + + constructor(initialBalance: i32) { + this.balance = initialBalance; + } + + getDepositClosure(): (amount: i32) => void { + let self = this; + return (amount: i32): void => { + self.balance += amount; + self.transactionCount++; + }; + } + + getWithdrawClosure(): (amount: i32) => bool { + let self = this; + return (amount: i32): bool => { + if (self.balance >= amount) { + self.balance -= amount; + self.transactionCount++; + return true; + } + return false; + }; + } + + getBalanceClosure(): () => i32 { + let self = this; + return (): i32 => self.balance; + } + + getTransactionCountClosure(): () => i32 { + let self = this; + return (): i32 => self.transactionCount; + } +} + +// Test 2.1: Bank account operations +function testBankAccount(): i32 { + let account = new BankAccount(100); + + let deposit = account.getDepositClosure(); + let withdraw = account.getWithdrawClosure(); + let getBalance = account.getBalanceClosure(); + let getTxCount = account.getTransactionCountClosure(); + + deposit(50); // balance = 150, txCount = 1 + assert(getBalance() == 150); + + assert(withdraw(30) == true); // balance = 120, txCount = 2 + assert(getBalance() == 120); + + assert(withdraw(200) == false); // insufficient funds, txCount still 2 + assert(getBalance() == 120); + assert(getTxCount() == 2); + + deposit(100); // balance = 220, txCount = 3 + assert(withdraw(220) == true); // balance = 0, txCount = 4 + + return getBalance() * 1000 + getTxCount(); // 0 * 1000 + 4 = 4 +} +assert(testBankAccount() == 4); + +// ============================================================================= +// SECTION 3: Closure Capturing Both "this" and Local Variables +// ============================================================================= + +class Calculator { + result: i32 = 0; + + getOperationClosure(operand: i32, operation: i32): () => i32 { + // Captures both 'self' (this) and parameters 'operand' and 'operation' + let self = this; + return (): i32 => { + if (operation == 0) { // add + self.result += operand; + } else if (operation == 1) { // subtract + self.result -= operand; + } else if (operation == 2) { // multiply + self.result *= operand; + } + return self.result; + }; + } + + reset(): void { + this.result = 0; + } +} + +// Test 3.1: Calculator with mixed captures +function testCalculatorClosures(): i32 { + let calc = new Calculator(); + + let addFive = calc.getOperationClosure(5, 0); + let subtractTwo = calc.getOperationClosure(2, 1); + let multiplyThree = calc.getOperationClosure(3, 2); + + addFive(); // result = 5 + addFive(); // result = 10 + subtractTwo(); // result = 8 + multiplyThree(); // result = 24 + + return calc.result; +} +assert(testCalculatorClosures() == 24); + +// ============================================================================= +// SECTION 4: Nested Classes with Closures +// ============================================================================= + +class Inner { + value: i32; + + constructor(v: i32) { + this.value = v; + } + + getValueClosure(): () => i32 { + let self = this; + return (): i32 => self.value; + } + + getSetterClosure(): (v: i32) => void { + let self = this; + return (v: i32): void => { + self.value = v; + }; + } +} + +class Outer { + inner: Inner; + multiplier: i32; + + constructor(innerValue: i32, mult: i32) { + this.inner = new Inner(innerValue); + this.multiplier = mult; + } + + getComputeClosure(): () => i32 { + // Captures self, which has access to inner + let self = this; + return (): i32 => self.inner.value * self.multiplier; + } + + getInnerSetterClosure(): (v: i32) => void { + let self = this; + return (v: i32): void => { + self.inner.value = v; + }; + } +} + +// Test 4.1: Nested object access through closures +function testNestedClosures(): i32 { + let outer = new Outer(10, 3); + let compute = outer.getComputeClosure(); + let setInner = outer.getInnerSetterClosure(); + + assert(compute() == 30); // 10 * 3 + + setInner(20); + assert(compute() == 60); // 20 * 3 + + return compute(); +} +assert(testNestedClosures() == 60); + +// ============================================================================= +// SECTION 5: Closures with Inheritance +// ============================================================================= + +class Animal { + name: string; + age: i32; + + constructor(name: string, age: i32) { + this.name = name; + this.age = age; + } + + getAgeClosure(): () => i32 { + let self = this; + return (): i32 => self.age; + } + + getAgeIncrementClosure(): () => void { + let self = this; + return (): void => { + self.age++; + }; + } +} + +class Dog extends Animal { + breed: string; + + constructor(name: string, age: i32, breed: string) { + super(name, age); + this.breed = breed; + } + + getBreedClosure(): () => string { + let self = this; + return (): string => self.breed; + } + + getFullInfoClosure(): () => string { + let self = this; + return (): string => self.name + " (" + self.breed + ")"; + } +} + +// Test 5.1: Inheritance with closures +function testInheritanceClosures(): i32 { + let dog = new Dog("Rex", 3, "German Shepherd"); + + let getAge = dog.getAgeClosure(); + let incAge = dog.getAgeIncrementClosure(); + let getBreed = dog.getBreedClosure(); + + assert(getAge() == 3); + assert(getBreed() == "German Shepherd"); + + incAge(); + incAge(); + + return getAge(); // 5 +} +assert(testInheritanceClosures() == 5); + +// ============================================================================= +// SECTION 6: Factory Pattern with Closures +// ============================================================================= + +class EventEmitter { + private listeners: Array<(data: i32) => void> = new Array<(data: i32) => void>(); + + addListener(listener: (data: i32) => void): void { + this.listeners.push(listener); + } + + emit(data: i32): void { + for (let i = 0; i < this.listeners.length; i++) { + this.listeners[i](data); + } + } + + getListenerCount(): i32 { + return this.listeners.length; + } +} + +class DataProcessor { + processedCount: i32 = 0; + lastValue: i32 = 0; + sum: i32 = 0; + + getProcessorClosure(): (data: i32) => void { + let self = this; + return (data: i32): void => { + self.processedCount++; + self.lastValue = data; + self.sum += data; + }; + } +} + +// Test 6.1: Event emitter pattern with closures +function testEventEmitterPattern(): i32 { + let emitter = new EventEmitter(); + let processor1 = new DataProcessor(); + let processor2 = new DataProcessor(); + + emitter.addListener(processor1.getProcessorClosure()); + emitter.addListener(processor2.getProcessorClosure()); + + emitter.emit(10); + emitter.emit(20); + emitter.emit(30); + + assert(processor1.processedCount == 3); + assert(processor2.processedCount == 3); + assert(processor1.sum == 60); + assert(processor2.sum == 60); + assert(processor1.lastValue == 30); + assert(processor2.lastValue == 30); + + return processor1.sum + processor2.sum; // 120 +} +assert(testEventEmitterPattern() == 120); + +// ============================================================================= +// SECTION 7: Builder Pattern with Closures +// ============================================================================= + +class QueryBuilder { + private selectFields: string = "*"; + private tableName: string = ""; + private whereClause: string = ""; + + getSelectClosure(): (fields: string) => void { + let self = this; + return (fields: string): void => { + self.selectFields = fields; + }; + } + + getFromClosure(): (table: string) => void { + let self = this; + return (table: string): void => { + self.tableName = table; + }; + } + + getWhereClosure(): (clause: string) => void { + let self = this; + return (clause: string): void => { + self.whereClause = clause; + }; + } + + getBuildClosure(): () => string { + let self = this; + return (): string => { + let query = "SELECT " + self.selectFields + " FROM " + self.tableName; + if (self.whereClause.length > 0) { + query += " WHERE " + self.whereClause; + } + return query; + }; + } +} + +// Test 7.1: Builder pattern with closures +function testBuilderPattern(): bool { + let builder = new QueryBuilder(); + + let select = builder.getSelectClosure(); + let from = builder.getFromClosure(); + let where = builder.getWhereClosure(); + let build = builder.getBuildClosure(); + + select("id, name"); + from("users"); + where("active = 1"); + + let query = build(); + assert(query == "SELECT id, name FROM users WHERE active = 1"); + + return true; +} +assert(testBuilderPattern() == true); + +// ============================================================================= +// SECTION 8: State Machine with Closures +// ============================================================================= + +class StateMachine { + private state: i32 = 0; // 0=idle, 1=running, 2=paused, 3=stopped + + getStartClosure(): () => bool { + let self = this; + return (): bool => { + if (self.state == 0 || self.state == 2) { + self.state = 1; + return true; + } + return false; + }; + } + + getPauseClosure(): () => bool { + let self = this; + return (): bool => { + if (self.state == 1) { + self.state = 2; + return true; + } + return false; + }; + } + + getStopClosure(): () => bool { + let self = this; + return (): bool => { + if (self.state == 1 || self.state == 2) { + self.state = 3; + return true; + } + return false; + }; + } + + getResetClosure(): () => void { + let self = this; + return (): void => { + self.state = 0; + }; + } + + getStateClosure(): () => i32 { + let self = this; + return (): i32 => self.state; + } +} + +// Test 8.1: State machine transitions +function testStateMachine(): i32 { + let sm = new StateMachine(); + + let start = sm.getStartClosure(); + let pause = sm.getPauseClosure(); + let stop = sm.getStopClosure(); + let reset = sm.getResetClosure(); + let getState = sm.getStateClosure(); + + assert(getState() == 0); // idle + + assert(start() == true); + assert(getState() == 1); // running + + assert(start() == false); // already running + + assert(pause() == true); + assert(getState() == 2); // paused + + assert(start() == true); // can restart from paused + assert(getState() == 1); // running again + + assert(stop() == true); + assert(getState() == 3); // stopped + + assert(start() == false); // can't start from stopped + + reset(); + assert(getState() == 0); // back to idle + + return getState(); +} +assert(testStateMachine() == 0); + +// ============================================================================= +// SECTION 9: Observable Pattern with Closures +// ============================================================================= + +class Observable { + private value: i32; + private observers: Array<(oldVal: i32, newVal: i32) => void> = new Array<(oldVal: i32, newVal: i32) => void>(); + + constructor(initial: i32) { + this.value = initial; + } + + getSubscribeClosure(): (observer: (oldVal: i32, newVal: i32) => void) => void { + let self = this; + return (observer: (oldVal: i32, newVal: i32) => void): void => { + self.observers.push(observer); + }; + } + + getSetClosure(): (newValue: i32) => void { + let self = this; + return (newValue: i32): void => { + let oldValue = self.value; + self.value = newValue; + for (let i = 0; i < self.observers.length; i++) { + self.observers[i](oldValue, newValue); + } + }; + } + + getGetClosure(): () => i32 { + let self = this; + return (): i32 => self.value; + } +} + +// Helper class for tracking observer state +class ObserverState { + changeCount: i32 = 0; + totalDiff: i32 = 0; + + getCountObserver(): (oldVal: i32, newVal: i32) => void { + let self = this; + return (oldVal: i32, newVal: i32): void => { + self.changeCount++; + }; + } + + getDiffObserver(): (oldVal: i32, newVal: i32) => void { + let self = this; + return (oldVal: i32, newVal: i32): void => { + self.totalDiff += newVal - oldVal; + }; + } +} + +// Test 9.1: Observable with multiple observers +function testObservable(): i32 { + let obs = new Observable(0); + + let subscribe = obs.getSubscribeClosure(); + let set = obs.getSetClosure(); + let get = obs.getGetClosure(); + + let state = new ObserverState(); + + subscribe(state.getCountObserver()); + subscribe(state.getDiffObserver()); + + set(10); // changeCount = 1, totalDiff = 10 + set(25); // changeCount = 2, totalDiff = 25 (10 + 15) + set(20); // changeCount = 3, totalDiff = 20 (25 - 5) + + assert(get() == 20); + assert(state.changeCount == 3); + assert(state.totalDiff == 20); + + return get() + state.changeCount + state.totalDiff; // 20 + 3 + 20 = 43 +} +assert(testObservable() == 43); + +// ============================================================================= +// SECTION 10: Complex Generic-like Patterns +// ============================================================================= + +class Box { + value: i32; + + constructor(v: i32) { + this.value = v; + } + + getMapClosure(): (fn: (v: i32) => i32) => void { + let self = this; + return (fn: (v: i32) => i32): void => { + self.value = fn(self.value); + }; + } + + getFlatMapClosure(): (fn: (v: i32) => Box) => Box { + let self = this; + return (fn: (v: i32) => Box): Box => { + return fn(self.value); + }; + } + + getValueClosure(): () => i32 { + let self = this; + return (): i32 => self.value; + } +} + +// Test 10.1: Functor-like map operation +function testBoxMap(): i32 { + let box = new Box(5); + let map = box.getMapClosure(); + let getValue = box.getValueClosure(); + + map((v: i32): i32 => v * 2); // 10 + map((v: i32): i32 => v + 3); // 13 + map((v: i32): i32 => v * v); // 169 + + return getValue(); +} +assert(testBoxMap() == 169); + +// Test 10.2: FlatMap with closure +function testBoxFlatMap(): i32 { + let box = new Box(5); + let flatMap = box.getFlatMapClosure(); + + let result = flatMap((v: i32): Box => new Box(v * 10)); + + return result.value; // 50 +} +assert(testBoxFlatMap() == 50); + +// ============================================================================= +// SECTION 11: Closure Chaining with This +// ============================================================================= + +class ChainableCounter { + count: i32 = 0; + + // Returns a closure that returns self for chaining + getAddClosure(amount: i32): () => ChainableCounter { + let self = this; + return (): ChainableCounter => { + self.count += amount; + return self; + }; + } + + getMultiplyClosure(factor: i32): () => ChainableCounter { + let self = this; + return (): ChainableCounter => { + self.count *= factor; + return self; + }; + } + + getResetClosure(): () => ChainableCounter { + let self = this; + return (): ChainableCounter => { + self.count = 0; + return self; + }; + } +} + +// Test 11.1: Method chaining through closures +function testClosureChaining(): i32 { + let counter = new ChainableCounter(); + + let add5 = counter.getAddClosure(5); + let add10 = counter.getAddClosure(10); + let mult2 = counter.getMultiplyClosure(2); + + add5(); // count = 5 + add10(); // count = 15 + mult2(); // count = 30 + add5(); // count = 35 + + return counter.count; +} +assert(testClosureChaining() == 35); + +// ============================================================================= +// SECTION 12: Callback-based Async-like Patterns +// ============================================================================= + +class Task { + private completed: bool = false; + private result: i32 = 0; + private callbacks: Array<(result: i32) => void> = new Array<(result: i32) => void>(); + + getThenClosure(): (callback: (result: i32) => void) => void { + let self = this; + return (callback: (result: i32) => void): void => { + if (self.completed) { + callback(self.result); + } else { + self.callbacks.push(callback); + } + }; + } + + getCompleteClosure(): (result: i32) => void { + let self = this; + return (result: i32): void => { + self.completed = true; + self.result = result; + for (let i = 0; i < self.callbacks.length; i++) { + self.callbacks[i](result); + } + }; + } + + isCompleted(): bool { + return this.completed; + } +} + +// Test 12.1: Promise-like pattern +function testTaskCallbacks(): i32 { + let task = new Task(); + let then = task.getThenClosure(); + let complete = task.getCompleteClosure(); + + let receivedValue: i32 = 0; + + // Register callback before completion + then((result: i32): void => { + receivedValue = result * 2; + }); + + assert(receivedValue == 0); // Not called yet + + complete(21); + + assert(receivedValue == 42); // Callback was called + assert(task.isCompleted() == true); + + return receivedValue; +} +assert(testTaskCallbacks() == 42); + +// Test 12.2: Register callback after completion +function testTaskCallbackAfterComplete(): i32 { + let task = new Task(); + let then = task.getThenClosure(); + let complete = task.getCompleteClosure(); + + complete(50); + + let receivedValue: i32 = 0; + then((result: i32): void => { + receivedValue = result; + }); + + // Should be called immediately since task is already complete + return receivedValue; +} +assert(testTaskCallbackAfterComplete() == 50); + +// ============================================================================= +// SECTION 13: Resource Management Pattern +// ============================================================================= + +class Resource { + private acquired: bool = false; + private useCount: i32 = 0; + + getAcquireClosure(): () => bool { + let self = this; + return (): bool => { + if (!self.acquired) { + self.acquired = true; + return true; + } + return false; + }; + } + + getReleaseClosure(): () => bool { + let self = this; + return (): bool => { + if (self.acquired) { + self.acquired = false; + return true; + } + return false; + }; + } + + getUseClosure(): (action: () => i32) => i32 { + let self = this; + return (action: () => i32): i32 => { + if (self.acquired) { + self.useCount++; + return action(); + } + return -1; // Error: not acquired + }; + } + + getUseCount(): i32 { + return this.useCount; + } +} + +// Test 13.1: Resource acquire/use/release +function testResourceManagement(): i32 { + let resource = new Resource(); + + let acquire = resource.getAcquireClosure(); + let release = resource.getReleaseClosure(); + let use = resource.getUseClosure(); + + // Can't use without acquiring + assert(use((): i32 => 42) == -1); + + // Acquire + assert(acquire() == true); + assert(acquire() == false); // Already acquired + + // Use + assert(use((): i32 => 10) == 10); + assert(use((): i32 => 20) == 20); + assert(use((): i32 => 30) == 30); + + assert(resource.getUseCount() == 3); + + // Release + assert(release() == true); + assert(release() == false); // Already released + + // Can't use after release + assert(use((): i32 => 42) == -1); + + return resource.getUseCount(); +} +assert(testResourceManagement() == 3); + +// ============================================================================= +// SECTION 14: Composite Pattern with Closures +// ============================================================================= + +class TreeNode { + value: i32; + children: Array = new Array(); + + constructor(v: i32) { + this.value = v; + } + + addChild(child: TreeNode): void { + this.children.push(child); + } + + getSumClosure(): () => i32 { + let self = this; + return (): i32 => { + let sum = self.value; + for (let i = 0; i < self.children.length; i++) { + let childSum = self.children[i].getSumClosure(); + sum += childSum(); + } + return sum; + }; + } + + getDepthClosure(): () => i32 { + let self = this; + return (): i32 => { + if (self.children.length == 0) { + return 1; + } + let maxChildDepth: i32 = 0; + for (let i = 0; i < self.children.length; i++) { + let childDepth = self.children[i].getDepthClosure(); + let d = childDepth(); + if (d > maxChildDepth) { + maxChildDepth = d; + } + } + return maxChildDepth + 1; + }; + } +} + +// Test 14.1: Tree traversal with closures +function testTreePattern(): i32 { + // 1 + // / \ + // 2 3 + // / \ \ + // 4 5 6 + let root = new TreeNode(1); + let n2 = new TreeNode(2); + let n3 = new TreeNode(3); + let n4 = new TreeNode(4); + let n5 = new TreeNode(5); + let n6 = new TreeNode(6); + + root.addChild(n2); + root.addChild(n3); + n2.addChild(n4); + n2.addChild(n5); + n3.addChild(n6); + + let getSum = root.getSumClosure(); + let getDepth = root.getDepthClosure(); + + assert(getSum() == 21); // 1+2+3+4+5+6 + assert(getDepth() == 3); + + return getSum() * 100 + getDepth(); // 2103 +} +assert(testTreePattern() == 2103); + +// ============================================================================= +// SECTION 15: Iterator Pattern with Closures +// ============================================================================= + +class Range { + private current: i32; + private endVal: i32; + private step: i32; + + constructor(start: i32, endVal: i32, step: i32 = 1) { + this.current = start; + this.endVal = endVal; + this.step = step; + } + + getHasNextClosure(): () => bool { + let self = this; + return (): bool => { + if (self.step > 0) { + return self.current < self.endVal; + } else { + return self.current > self.endVal; + } + }; + } + + getNextClosure(): () => i32 { + let self = this; + return (): i32 => { + let value = self.current; + self.current += self.step; + return value; + }; + } + + getResetClosure(start: i32): () => void { + let self = this; + return (): void => { + self.current = start; + }; + } +} + +// Test 15.1: Forward iteration +function testRangeIterator(): i32 { + let range = new Range(0, 5, 1); + let hasNext = range.getHasNextClosure(); + let next = range.getNextClosure(); + + let sum: i32 = 0; + while (hasNext()) { + sum += next(); + } + + return sum; // 0+1+2+3+4 = 10 +} +assert(testRangeIterator() == 10); + +// Test 15.2: Backward iteration with step +function testReverseRangeIterator(): i32 { + let range = new Range(10, 0, -2); + let hasNext = range.getHasNextClosure(); + let next = range.getNextClosure(); + + let sum: i32 = 0; + while (hasNext()) { + sum += next(); + } + + return sum; // 10+8+6+4+2 = 30 +} +assert(testReverseRangeIterator() == 30); + +// ============================================================================= +// Final assertion to confirm all tests passed +// ============================================================================= +assert(true); // If we reach here, all tests passed! From cc0f4ecf7dd84a73f2d2caa143865ca3e19384c2 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:39:42 -0500 Subject: [PATCH 06/13] Add closures feature flag and enablement checks Introduces a new 'closures' feature flag to the compiler, updates feature enumeration, and adds checks to ensure closures are only used when the feature is enabled. Test configurations are updated to enable the closures feature for relevant tests. --- src/common.ts | 1 + src/compiler.ts | 24 ++++++++++++++++++++++++ src/index-wasm.ts | 2 ++ src/program.ts | 2 ++ std/assembly/shared/feature.ts | 5 ++++- tests/compiler/closure-class.json | 4 +++- tests/compiler/closure-stress.json | 1 + tests/compiler/closure.json | 1 + 8 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/common.ts b/src/common.ts index 3cc25a0845..9efb088868 100644 --- a/src/common.ts +++ b/src/common.ts @@ -191,6 +191,7 @@ export namespace CommonNames { export const ASC_FEATURE_RELAXED_SIMD = "ASC_FEATURE_RELAXED_SIMD"; export const ASC_FEATURE_EXTENDED_CONST = "ASC_FEATURE_EXTENDED_CONST"; export const ASC_FEATURE_STRINGREF = "ASC_FEATURE_STRINGREF"; + export const ASC_FEATURE_CLOSURES = "ASC_FEATURE_CLOSURES"; export const ASC_VERSION_MAJOR = "ASC_VERSION_MAJOR"; export const ASC_VERSION_MINOR = "ASC_VERSION_MINOR"; export const ASC_VERSION_PATCH = "ASC_VERSION_PATCH"; diff --git a/src/compiler.ts b/src/compiler.ts index 71ffeba689..10a6918038 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7497,6 +7497,14 @@ export class Compiler extends DiagnosticEmitter { // Analyze captured variables before compiling let captures = this.analyzeCapturedVariables(declaration, flow); if (captures.size > 0) { + // Check if closures feature is enabled + if (!this.options.hasFeature(Feature.Closures)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + expression.range, "closures" + ); + return module.unreachable(); + } instance.capturedLocals = captures; instance.outerFunction = sourceFunction; this.ensureClosureEnvironment(sourceFunction, captures, flow); @@ -7515,6 +7523,14 @@ export class Compiler extends DiagnosticEmitter { // Analyze captured variables before compiling let captures = this.analyzeCapturedVariables(declaration, flow); if (captures.size > 0) { + // Check if closures feature is enabled + if (!this.options.hasFeature(Feature.Closures)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + expression.range, "closures" + ); + return module.unreachable(); + } instance.capturedLocals = captures; instance.outerFunction = sourceFunction; this.ensureClosureEnvironment(sourceFunction, captures, flow); @@ -7990,6 +8006,14 @@ export class Compiler extends DiagnosticEmitter { let declaration = funcExpr.declaration; let capturedNames = this.analyzeCapturedVariablesWithDeclared(declaration, flow, instance, declaredVars); if (capturedNames.size > 0) { + // Check if closures feature is enabled + if (!this.options.hasFeature(Feature.Closures)) { + this.error( + DiagnosticCode.Feature_0_is_not_enabled, + funcExpr.range, "closures" + ); + break; + } // Store captured names for later use when compiling variable declarations let existingNames = instance.preCapturedNames; if (!existingNames) { diff --git a/src/index-wasm.ts b/src/index-wasm.ts index ec51de73da..12539ac43e 100644 --- a/src/index-wasm.ts +++ b/src/index-wasm.ts @@ -202,6 +202,8 @@ export const FEATURE_RELAXED_SIMD = Feature.RelaxedSimd; export const FEATURE_EXTENDED_CONST = Feature.ExtendedConst; /** String references. */ export const FEATURE_STRINGREF = Feature.Stringref; +/** Closures. */ +export const FEATURE_CLOSURES = Feature.Closures; /** All features. */ export const FEATURES_ALL = Feature.All; /** Default features. */ diff --git a/src/program.ts b/src/program.ts index 1ca18d1f0a..08e658ccc7 100644 --- a/src/program.ts +++ b/src/program.ts @@ -1086,6 +1086,8 @@ export class Program extends DiagnosticEmitter { i64_new(options.hasFeature(Feature.ExtendedConst) ? 1 : 0, 0)); this.registerConstantInteger(CommonNames.ASC_FEATURE_STRINGREF, Type.bool, i64_new(options.hasFeature(Feature.Stringref) ? 1 : 0, 0)); + this.registerConstantInteger(CommonNames.ASC_FEATURE_CLOSURES, Type.bool, + i64_new(options.hasFeature(Feature.Closures) ? 1 : 0, 0)); // remember deferred elements let queuedImports = new Array(); diff --git a/std/assembly/shared/feature.ts b/std/assembly/shared/feature.ts index 1baa9ba3c9..0fc1ed113c 100644 --- a/std/assembly/shared/feature.ts +++ b/std/assembly/shared/feature.ts @@ -34,8 +34,10 @@ export const enum Feature { ExtendedConst = 1 << 13, // see: https://github.com/WebAssembly/extended-const /** Reference typed strings. */ Stringref = 1 << 14, // see: https://github.com/WebAssembly/stringref + /** Closures. */ + Closures = 1 << 15, /** All features. */ - All = (1 << 15) - 1 + All = (1 << 16) - 1 } /** Gets the name of the specified feature one would specify on the command line. */ @@ -56,6 +58,7 @@ export function featureToString(feature: Feature): string { case Feature.RelaxedSimd: return "relaxed-simd"; case Feature.ExtendedConst: return "extended-const"; case Feature.Stringref: return "stringref"; + case Feature.Closures: return "closures"; } assert(false); return ""; diff --git a/tests/compiler/closure-class.json b/tests/compiler/closure-class.json index ea57a955e1..454738fb3d 100644 --- a/tests/compiler/closure-class.json +++ b/tests/compiler/closure-class.json @@ -1,3 +1,5 @@ { - "asc_flags": [] + "asc_flags": [ + "--enable", "closures" + ] } diff --git a/tests/compiler/closure-stress.json b/tests/compiler/closure-stress.json index 1bdd02b1be..454738fb3d 100644 --- a/tests/compiler/closure-stress.json +++ b/tests/compiler/closure-stress.json @@ -1,4 +1,5 @@ { "asc_flags": [ + "--enable", "closures" ] } diff --git a/tests/compiler/closure.json b/tests/compiler/closure.json index 1bdd02b1be..454738fb3d 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -1,4 +1,5 @@ { "asc_flags": [ + "--enable", "closures" ] } From fe1a2867a3ac5d8ee502f4c84dd0a7aabe21f341 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 22:46:29 -0500 Subject: [PATCH 07/13] Simplify indirect call handling without closures Refactored the compiler to only emit closure environment setup code when the closures feature is enabled. For builds without closures, indirect calls now use a simpler code path, resulting in smaller and cleaner generated code. Updated numerous test outputs to reflect the reduced stack usage and removed unnecessary closure environment handling. --- src/compiler.ts | 71 +- tests/compiler/assert-nonnull.debug.wat | 122 +- tests/compiler/assert-nonnull.release.wat | 59 +- tests/compiler/builtins.debug.wat | 140 +- tests/compiler/builtins.release.wat | 27 +- tests/compiler/call-optional.debug.wat | 53 - tests/compiler/call-optional.release.wat | 44 - tests/compiler/call-rest.debug.wat | 124 +- tests/compiler/call-rest.release.wat | 37 +- .../compiler/class-static-function.debug.wat | 44 +- .../class-static-function.release.wat | 71 +- tests/compiler/function-call.debug.wat | 88 +- tests/compiler/function-call.release.wat | 64 +- tests/compiler/function-expression.debug.wat | 235 +- .../compiler/function-expression.release.wat | 226 +- tests/compiler/function-types.debug.wat | 191 +- tests/compiler/function-types.release.wat | 104 +- tests/compiler/getter-call.debug.wat | 26 +- tests/compiler/getter-call.release.wat | 13 +- tests/compiler/infer-generic.debug.wat | 46 +- tests/compiler/infer-generic.release.wat | 41 +- tests/compiler/inlining.debug.wat | 40 +- tests/compiler/inlining.release.wat | 17 +- tests/compiler/issues/2707.debug.wat | 23 +- tests/compiler/issues/2707.release.wat | 14 +- .../resolve-function-expression.debug.wat | 44 +- .../resolve-function-expression.release.wat | 29 +- tests/compiler/resolve-ternary.debug.wat | 48 +- tests/compiler/resolve-ternary.release.wat | 29 +- tests/compiler/return.debug.wat | 33 - tests/compiler/return.release.wat | 64 +- tests/compiler/std/array-access.debug.wat | 27 +- tests/compiler/std/array-access.release.wat | 15 +- tests/compiler/std/array.debug.wat | 5355 ++++----- tests/compiler/std/array.release.wat | 3224 +++--- tests/compiler/std/staticarray.debug.wat | 925 +- tests/compiler/std/staticarray.release.wat | 735 +- tests/compiler/std/typedarray.debug.wat | 9797 +++++++---------- tests/compiler/std/typedarray.release.wat | 7208 +++++------- tests/compiler/ternary.debug.wat | 48 - tests/compiler/ternary.release.wat | 103 +- tests/compiler/typealias.debug.wat | 17 +- tests/compiler/typealias.release.wat | 14 +- 43 files changed, 11071 insertions(+), 18564 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 10a6918038..1bcc2d3eee 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7267,40 +7267,55 @@ export class Compiler extends DiagnosticEmitter { } if (operands) this.operandsTostack(signature, operands); - // Load the _env field from Function object and store to global for closure access - let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); - let usizeSize = this.options.usizeType.byteSize; - - // Get the offset of _env in the Function class - // _index is u32 (4 bytes), _env follows at offset 4 (wasm32) or 8 (wasm64 with padding) - let envOffset = this.options.isWasm64 ? 8 : 4; + // Only set up closure environment handling when closures feature is enabled + if (this.options.hasFeature(Feature.Closures)) { + // Load the _env field from Function object and store to global for closure access + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + let usizeSize = this.options.usizeType.byteSize; - // We need to evaluate functionArg once, store to temp, then use for both _env and _index - let flow = this.currentFlow; - let funcTemp = flow.getTempLocal(this.options.usizeType); - let funcTempIndex = funcTemp.index; + // Get the offset of _env in the Function class + // _index is u32 (4 bytes), _env follows at offset 4 (wasm32) or 8 (wasm64 with padding) + let envOffset = this.options.isWasm64 ? 8 : 4; - let stmts: ExpressionRef[] = [ - // Store function pointer to temp - module.local_set(funcTempIndex, functionArg, true), - // Store _env to global: $~lib/__closure_env = func._env - module.global_set(closureEnvGlobal, - module.load(usizeSize, false, - module.local_get(funcTempIndex, sizeTypeRef), - sizeTypeRef, - envOffset + // We need to evaluate functionArg once, store to temp, then use for both _env and _index + let flow = this.currentFlow; + let funcTemp = flow.getTempLocal(this.options.usizeType); + let funcTempIndex = funcTemp.index; + + let stmts: ExpressionRef[] = [ + // Store function pointer to temp + module.local_set(funcTempIndex, functionArg, true), + // Store _env to global: $~lib/__closure_env = func._env + module.global_set(closureEnvGlobal, + module.load(usizeSize, false, + module.local_get(funcTempIndex, sizeTypeRef), + sizeTypeRef, + envOffset + ) ) - ) - ]; + ]; - let indexExpr = module.load(4, false, - module.local_get(funcTempIndex, sizeTypeRef), - TypeRef.I32 // ._index - ); + let indexExpr = module.load(4, false, + module.local_get(funcTempIndex, sizeTypeRef), + TypeRef.I32 // ._index + ); + + let expr = module.call_indirect( + null, // TODO: handle multiple tables + module.block(null, stmts.concat([indexExpr]), TypeRef.I32), + operands, + signature.paramRefs, + signature.resultRefs + ); + this.currentType = returnType; + return expr; + } + // Without closures, use simpler indirect call (just load _index from Function) + let indexExpr = module.load(4, false, functionArg, TypeRef.I32); // ._index at offset 0 let expr = module.call_indirect( - null, // TODO: handle multiple tables - module.block(null, stmts.concat([indexExpr]), TypeRef.I32), + null, + indexExpr, operands, signature.paramRefs, signature.resultRefs diff --git a/tests/compiler/assert-nonnull.debug.wat b/tests/compiler/assert-nonnull.debug.wat index f1a97febc8..1edc6edeed 100644 --- a/tests/compiler/assert-nonnull.debug.wat +++ b/tests/compiler/assert-nonnull.debug.wat @@ -9,7 +9,6 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 444)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33212)) (global $~lib/memory/__heap_base i32 (i32.const 33212)) @@ -516,28 +515,23 @@ (func $assert-nonnull/testObjFn (param $foo i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $foo - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 i32.store - local.get $3 + local.get $2 call $assert-nonnull/Foo#get:baz local.tee $1 i32.store offset=4 @@ -552,29 +546,22 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $1) - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return ) (func $assert-nonnull/testObjRet (param $foo i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -582,19 +569,18 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $foo - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 call $assert-nonnull/Foo#get:baz local.tee $1 i32.store offset=4 @@ -609,19 +595,13 @@ call $~lib/builtins/abort unreachable end + i32.load + call_indirect (type $1) local.tee $2 i32.store offset=8 local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 - i32.load - call_indirect (type $1) - local.tee $3 - i32.store offset=12 - local.get $3 if (result i32) - local.get $3 + local.get $2 else i32.const 32 i32.const 160 @@ -630,12 +610,12 @@ call $~lib/builtins/abort unreachable end - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) (func $assert-nonnull/testVar (param $n i32) (result i32) @@ -675,16 +655,14 @@ (func $assert-nonnull/testFn (param $fn i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer @@ -702,29 +680,22 @@ call $~lib/builtins/abort unreachable end - local.tee $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $1) - local.set $3 + local.set $2 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $2 return ) (func $assert-nonnull/testFn2 (param $fn i32) (result i32) (local $1 i32) (local $fn2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -732,9 +703,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $fn local.tee $1 @@ -752,33 +720,25 @@ end local.tee $fn2 i32.store offset=4 - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn2 - local.tee $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $1) - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) (func $assert-nonnull/testRet (param $fn i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -787,10 +747,6 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 0 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer local.get $fn @@ -807,19 +763,13 @@ call $~lib/builtins/abort unreachable end + i32.load + call_indirect (type $1) local.tee $2 i32.store offset=4 local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 - i32.load - call_indirect (type $1) - local.tee $3 - i32.store offset=8 - local.get $3 if (result i32) - local.get $3 + local.get $2 else i32.const 32 i32.const 160 @@ -828,12 +778,12 @@ call $~lib/builtins/abort unreachable end - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) (func $export:assert-nonnull/testVar (param $0 i32) (result i32) diff --git a/tests/compiler/assert-nonnull.release.wat b/tests/compiler/assert-nonnull.release.wat index 3a4a293ea4..67f4405bc2 100644 --- a/tests/compiler/assert-nonnull.release.wat +++ b/tests/compiler/assert-nonnull.release.wat @@ -578,7 +578,6 @@ unreachable ) (func $export:assert-nonnull/testFn (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -592,7 +591,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -600,12 +599,11 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer local.get $0 i32.eqz if @@ -617,11 +615,6 @@ unreachable end local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - drop - local.get $0 i32.load call_indirect (type $1) unreachable @@ -648,7 +641,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -659,9 +652,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -677,12 +667,6 @@ end local.get $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - drop local.get $0 i32.load call_indirect (type $1) @@ -710,7 +694,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -721,20 +705,11 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 i32.eqz br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - drop local.get $0 i32.load call_indirect (type $1) @@ -755,7 +730,6 @@ unreachable ) (func $export:assert-nonnull/testObjFn (param $0 i32) (result i32) - (local $1 i32) global.get $~lib/memory/__stack_pointer i32.const 4 i32.sub @@ -769,7 +743,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -780,9 +754,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store global.get $~lib/memory/__stack_pointer @@ -790,7 +761,6 @@ i32.load offset=4 local.tee $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer local.get $0 i32.eqz if @@ -802,11 +772,6 @@ unreachable end local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - drop - local.get $0 i32.load call_indirect (type $1) unreachable @@ -833,7 +798,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -844,8 +809,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -857,12 +822,6 @@ local.get $0 i32.eqz br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - drop local.get $0 i32.load call_indirect (type $1) diff --git a/tests/compiler/builtins.debug.wat b/tests/compiler/builtins.debug.wat index 7a2dcf7089..fd74409ab4 100644 --- a/tests/compiler/builtins.debug.wat +++ b/tests/compiler/builtins.debug.wat @@ -23,7 +23,6 @@ (global $builtins/s (mut i32) (i32.const 0)) (global $builtins/fn (mut i32) (i32.const 144)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/shared/runtime/Runtime.Stub i32 (i32.const 0)) (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) @@ -535,32 +534,28 @@ (local $37 f64) (local $38 f64) (local $39 f64) - (local $40 i32) - (local $41 f32) - (local $42 f64) + (local $40 f32) + (local $41 f64) + (local $42 f32) (local $43 f32) - (local $44 f32) + (local $44 f64) (local $45 f64) - (local $46 f64) - (local $47 f32) - (local $48 f64) + (local $46 f32) + (local $47 f64) + (local $48 i32) (local $49 i32) (local $50 i32) (local $51 i32) (local $52 i32) (local $53 i32) - (local $54 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 1 drop i32.const 0 @@ -2512,16 +2507,9 @@ end i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $builtins/fn - local.tee $40 - i32.store - local.get $40 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $40 i32.load call_indirect (type $2) i32.const 3 @@ -2539,11 +2527,11 @@ i32.const 2 i32.const 3 global.get $builtins/fn - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=4 - local.get $54 + local.get $53 + i32.store + local.get $53 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:index call_indirect (type $2) i32.eq @@ -2557,17 +2545,17 @@ unreachable end global.get $builtins/fn - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=8 - local.get $54 + local.get $53 + i32.store offset=4 + local.get $53 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:name - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=4 - local.get $54 + local.get $53 + i32.store + local.get $53 i32.const 32 call $~lib/string/String.__eq i32.eqz @@ -2580,11 +2568,11 @@ unreachable end global.get $builtins/fn - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=4 - local.get $54 + local.get $53 + i32.store + local.get $53 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -2598,11 +2586,11 @@ unreachable end global.get $builtins/fn - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=4 - local.get $54 + local.get $53 + i32.store + local.get $53 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#get:length i32.const 2 i32.eq @@ -2616,17 +2604,17 @@ unreachable end global.get $builtins/fn - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=8 - local.get $54 + local.get $53 + i32.store offset=4 + local.get $53 call $~lib/function/Function<%28i32%2Ci32%29=>i32>#toString - local.set $54 + local.set $53 global.get $~lib/memory/__stack_pointer - local.get $54 - i32.store offset=4 - local.get $54 + local.get $53 + i32.store + local.get $53 i32.const 176 call $~lib/string/String.__eq i32.eqz @@ -2735,57 +2723,57 @@ f64.ne drop f32.const nan:0x400000 - local.tee $41 - local.get $41 + local.tee $40 + local.get $40 f32.ne drop f64.const nan:0x8000000000000 - local.tee $42 - local.get $42 + local.tee $41 + local.get $41 f64.ne drop f32.const nan:0x400000 - local.tee $43 - local.get $43 + local.tee $42 + local.get $42 f32.sub f32.const 0 f32.eq i32.eqz drop f32.const inf - local.tee $44 - local.get $44 + local.tee $43 + local.get $43 f32.sub f32.const 0 f32.eq i32.eqz drop f64.const nan:0x8000000000000 - local.tee $45 - local.get $45 + local.tee $44 + local.get $44 f64.sub f64.const 0 f64.eq i32.eqz drop f64.const inf - local.tee $46 - local.get $46 + local.tee $45 + local.get $45 f64.sub f64.const 0 f64.eq i32.eqz drop f32.const 0 - local.tee $47 - local.get $47 + local.tee $46 + local.get $46 f32.sub f32.const 0 f32.eq drop f64.const 0 - local.tee $48 - local.get $48 + local.tee $47 + local.get $47 f64.sub f64.const 0 f64.eq @@ -3259,17 +3247,19 @@ unreachable end i32.const 0 - local.set $49 + local.set $48 i32.const 0 - local.set $50 + local.set $49 i32.const 51 + local.set $50 + i32.const 52 local.set $51 i32.const 52 local.set $52 - i32.const 52 - local.set $53 i32.const 256 i32.const 5 + local.get $48 + f64.convert_i32_u local.get $49 f64.convert_i32_u local.get $50 @@ -3278,11 +3268,9 @@ f64.convert_i32_u local.get $52 f64.convert_i32_u - local.get $53 - f64.convert_i32_u call $~lib/builtins/trace + local.get $48 local.get $49 - local.get $50 i32.eq i32.eqz if @@ -3293,8 +3281,8 @@ call $~lib/builtins/abort unreachable end - local.get $49 - local.get $51 + local.get $48 + local.get $50 i32.ne i32.eqz if @@ -3305,7 +3293,7 @@ call $~lib/builtins/abort unreachable end - local.get $51 + local.get $50 i32.const 51 i32.eq i32.eqz @@ -3317,8 +3305,8 @@ call $~lib/builtins/abort unreachable end + local.get $51 local.get $52 - local.get $53 i32.eq i32.eqz if @@ -3696,7 +3684,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/builtins.release.wat b/tests/compiler/builtins.release.wat index 6cd9814b96..a22c2024c1 100644 --- a/tests/compiler/builtins.release.wat +++ b/tests/compiler/builtins.release.wat @@ -246,7 +246,7 @@ ) (func $start:builtins global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -263,9 +263,6 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 1 global.set $builtins/i i32.const 0 @@ -617,12 +614,6 @@ global.set $builtins/f f64.const 25 global.set $builtins/F - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store - i32.const 1172 - i32.load - drop i32.const 1 i32.const 2 i32.const 1168 @@ -640,7 +631,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=4 + i32.store i32.const 2 i32.const 3 i32.const 1168 @@ -658,10 +649,10 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1056 - i32.store offset=4 + i32.store i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -676,16 +667,16 @@ end global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer i32.const 1168 - i32.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 1200 - i32.store offset=4 + i32.store i32.const 1200 i32.const 1200 call $~lib/string/String.__eq @@ -1016,7 +1007,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/call-optional.debug.wat b/tests/compiler/call-optional.debug.wat index 7f4c5b14b6..7a6794eba7 100644 --- a/tests/compiler/call-optional.debug.wat +++ b/tests/compiler/call-optional.debug.wat @@ -5,7 +5,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) (global $call-optional/optIndirect (mut i32) (i32.const 96)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 108)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32876)) (global $~lib/memory/__heap_base i32 (i32.const 32876)) @@ -48,20 +47,6 @@ call $call-optional/opt ) (func $start:call-optional - (local $0 i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 3 i32.const 0 i32.const 1 @@ -114,16 +99,9 @@ i32.const 3 i32.const 0 i32.const 0 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $call-optional/optIndirect - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $0) i32.const 0 @@ -140,16 +118,9 @@ i32.const 3 i32.const 4 i32.const 0 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $call-optional/optIndirect - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) i32.const 5 @@ -166,16 +137,9 @@ i32.const 3 i32.const 4 i32.const 5 - global.get $~lib/memory/__stack_pointer i32.const 3 global.set $~argumentsLength global.get $call-optional/optIndirect - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) i32.const 12 @@ -189,25 +153,8 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~start call $start:call-optional ) - (func $~stack_check - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__data_end - i32.lt_s - if - i32.const 32896 - i32.const 32944 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - ) ) diff --git a/tests/compiler/call-optional.release.wat b/tests/compiler/call-optional.release.wat index 5e2d52a19b..79b66938d4 100644 --- a/tests/compiler/call-optional.release.wat +++ b/tests/compiler/call-optional.release.wat @@ -4,7 +4,6 @@ (type $2 (func)) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33900)) (memory $0 1) (data $0 (i32.const 1036) "<") (data $0.1 (i32.const 1048) "\02\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") @@ -39,39 +38,12 @@ i32.add ) (func $~start - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1132 - i32.lt_s - if - i32.const 33920 - i32.const 33968 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 1 global.set $~argumentsLength i32.const 2 global.set $~argumentsLength i32.const 1 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store - i32.const 1124 - i32.load - drop i32.const 3 i32.const 0 i32.const 0 @@ -88,12 +60,6 @@ end i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=4 - i32.const 1124 - i32.load - drop i32.const 3 i32.const 4 i32.const 0 @@ -112,12 +78,6 @@ end i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=8 - i32.const 1124 - i32.load - drop i32.const 3 i32.const 4 i32.const 5 @@ -134,9 +94,5 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/call-rest.debug.wat b/tests/compiler/call-rest.debug.wat index 59bd454ab4..af743cb0b0 100644 --- a/tests/compiler/call-rest.debug.wat +++ b/tests/compiler/call-rest.debug.wat @@ -27,7 +27,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $call-rest/indirect (mut i32) (i32.const 624)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/rt/__rtti_base i32 (i32.const 1072)) (global $~lib/memory/__data_end i32 (i32.const 1112)) @@ -3401,19 +3400,14 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) - (local $11 i32) - (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill + i64.const 0 + i64.store memory.size i32.const 16 i32.shl @@ -3472,11 +3466,11 @@ i32.const 4 i32.const 560 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/fn i32.const 6 i32.eq @@ -3496,11 +3490,11 @@ i32.const 4 i32.const 592 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/fn i32.const 15 i32.eq @@ -3516,16 +3510,9 @@ i32.const 1 i32.const 0 i32.const 0 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $call-rest/indirect - local.tee $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $3) i32.const 1 @@ -3542,16 +3529,9 @@ i32.const 1 i32.const 2 i32.const 0 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $call-rest/indirect - local.tee $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $3) i32.const 3 @@ -3572,21 +3552,14 @@ i32.const 4 i32.const 656 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength global.get $call-rest/indirect - local.tee $5 - i32.store offset=12 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $3) i32.const 6 @@ -3607,21 +3580,14 @@ i32.const 4 i32.const 688 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength global.get $call-rest/indirect - local.tee $7 - i32.store offset=16 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $3) i32.const 15 @@ -3642,11 +3608,11 @@ global.set $~argumentsLength i32.const 0 call $call-rest/Foo#constructor@varargs - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/Foo#sum i32.const 1 i32.eq @@ -3666,11 +3632,11 @@ global.set $~argumentsLength i32.const 0 call $call-rest/Foo#constructor@varargs - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/Foo#sum i32.const 3 i32.eq @@ -3691,17 +3657,17 @@ i32.const 4 i32.const 800 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=20 - local.get $13 + local.get $9 + i32.store offset=4 + local.get $9 call $call-rest/Foo#constructor - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/Foo#sum i32.const 6 i32.eq @@ -3722,17 +3688,17 @@ i32.const 4 i32.const 832 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 - i32.store offset=20 - local.get $13 + local.get $9 + i32.store offset=4 + local.get $9 call $call-rest/Foo#constructor - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/Foo#sum i32.const 15 i32.eq @@ -3765,11 +3731,11 @@ i32.const 4 i32.const 896 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/count i32.const 1 i32.eq @@ -3787,11 +3753,11 @@ i32.const 4 i32.const 928 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/count i32.const 3 i32.eq @@ -3809,11 +3775,11 @@ i32.const 8 i32.const 1056 call $~lib/rt/__newArray - local.set $13 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $9 i32.store - local.get $13 + local.get $9 call $call-rest/count<~lib/string/String> i32.const 3 i32.eq @@ -3827,7 +3793,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/call-rest.release.wat b/tests/compiler/call-rest.release.wat index 7341e923da..24506bdd09 100644 --- a/tests/compiler/call-rest.release.wat +++ b/tests/compiler/call-rest.release.wat @@ -2493,7 +2493,7 @@ (func $start:call-rest (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -2502,9 +2502,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 24 - memory.fill + i64.const 0 + i64.store memory.size i32.const 16 i32.shl @@ -2613,12 +2612,6 @@ end i32.const 1 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=4 - i32.const 1652 - i32.load - drop i32.const 1 i32.const 0 i32.const 0 @@ -2637,12 +2630,6 @@ end i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=8 - i32.const 1652 - i32.load - drop i32.const 1 i32.const 2 i32.const 0 @@ -2669,12 +2656,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=12 - i32.const 1652 - i32.load - drop i32.const 1 i32.const 2 local.get $0 @@ -2701,12 +2682,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 1648 - i32.store offset=16 - i32.const 1652 - i32.load - drop i32.const 1 i32.const 2 local.get $0 @@ -2770,7 +2745,7 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=20 + i32.store offset=4 i32.const 2 local.get $0 call $call-rest/Foo#constructor @@ -2797,7 +2772,7 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=20 + i32.store offset=4 i32.const 2 local.get $0 call $call-rest/Foo#constructor @@ -2915,7 +2890,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/class-static-function.debug.wat b/tests/compiler/class-static-function.debug.wat index b36d10fc73..8c028d9590 100644 --- a/tests/compiler/class-static-function.debug.wat +++ b/tests/compiler/class-static-function.debug.wat @@ -1,11 +1,10 @@ (module (type $0 (func)) (type $1 (func (result i32))) - (type $2 (func (param i32 i32 i32 i32))) - (type $3 (func (param i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 124)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32892)) (global $~lib/memory/__heap_base i32 (i32.const 32892)) @@ -20,6 +19,14 @@ i32.const 42 return ) + (func $class-static-function/call (param $func i32) (result i32) + i32.const 0 + global.set $~argumentsLength + local.get $func + i32.load + call_indirect (type $1) + return + ) (func $~start call $start:class-static-function ) @@ -69,35 +76,4 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $class-static-function/call (param $func i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - global.set $~argumentsLength - local.get $func - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 - i32.load - call_indirect (type $1) - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) ) diff --git a/tests/compiler/class-static-function.release.wat b/tests/compiler/class-static-function.release.wat index 2d99c8d175..10a8811e24 100644 --- a/tests/compiler/class-static-function.release.wat +++ b/tests/compiler/class-static-function.release.wat @@ -21,53 +21,30 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1148 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1148 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1060 - i32.load - drop - i32.const 1056 - i32.load - call_indirect (type $0) - drop - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return + global.get $~lib/memory/__stack_pointer + i32.const 1148 + i32.lt_s + if + i32.const 33936 + i32.const 33984 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable end - i32.const 33936 - i32.const 33984 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 1056 + i32.store + i32.const 1056 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/function-call.debug.wat b/tests/compiler/function-call.debug.wat index 4cdf68e58c..85c7ac0268 100644 --- a/tests/compiler/function-call.debug.wat +++ b/tests/compiler/function-call.debug.wat @@ -12,7 +12,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-call/fnVoid (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-call/faVoid (mut i32) (i32.const 64)) (global $function-call/fnRet (mut i32) (i32.const 96)) (global $function-call/faRet (mut i32) (i32.const 192)) @@ -2493,59 +2492,29 @@ ) (func $start:function-call (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) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 - memory.fill - global.get $~lib/memory/__stack_pointer + i32.store i32.const 0 global.set $~argumentsLength global.get $function-call/fnVoid - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $2) - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-call/faVoid - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $2) i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-call/fnRet - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $4) i32.const 3 @@ -2561,16 +2530,9 @@ end i32.const 2 i32.const 3 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-call/faRet - local.tee $3 - i32.store offset=12 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $4) i32.const 5 @@ -2585,16 +2547,9 @@ unreachable end i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-call/fnThis - local.tee $4 - i32.store offset=16 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 1 @@ -2629,34 +2584,20 @@ call $function-call/Foo#constructor global.set $function-call/foo global.get $function-call/foo - local.set $8 - global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $8 + local.set $0 global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store + local.get $0 i32.const 0 global.set $~argumentsLength i32.const 656 - local.tee $5 - i32.store offset=24 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $3) i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength i32.const 688 - local.tee $6 - i32.store offset=28 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 1 @@ -2671,23 +2612,16 @@ unreachable end global.get $function-call/foo - local.set $8 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $8 - i32.store offset=20 - local.get $8 + local.get $0 + i32.store + local.get $0 i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength i32.const 720 - local.tee $7 - i32.store offset=32 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $6) i32.const 3 @@ -2702,7 +2636,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/function-call.release.wat b/tests/compiler/function-call.release.wat index 6f45ae785f..ab9646583b 100644 --- a/tests/compiler/function-call.release.wat +++ b/tests/compiler/function-call.release.wat @@ -155,7 +155,7 @@ local.get $0 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$114 + block $__inlined_func$~lib/rt/itcms/Object#unlink$115 local.get $1 i32.load offset=4 i32.const -4 @@ -179,7 +179,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$114 + br $__inlined_func$~lib/rt/itcms/Object#unlink$115 end local.get $1 i32.load offset=8 @@ -1469,13 +1469,10 @@ global.set $~lib/memory/__stack_pointer ) (func $~start - call $start:function-call - ) - (func $start:function-call (local $0 i32) (local $1 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1485,32 +1482,13 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 1056 i32.store - i32.const 1060 - i32.load - drop i32.const 1056 i32.load call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 1088 - i32.store offset=4 - i32.const 1092 - i32.load - drop i32.const 1088 i32.load call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 1120 - i32.store offset=8 - i32.const 1124 - i32.load - drop i32.const 1 i32.const 2 i32.const 1120 @@ -1526,12 +1504,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=12 - i32.const 1220 - i32.load - drop i32.const 2 i32.const 3 i32.const 1216 @@ -1547,12 +1519,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1248 - i32.store offset=16 - i32.const 1252 - i32.load - drop i32.const 1 i32.const 1248 i32.load @@ -1645,23 +1611,11 @@ global.get $~lib/memory/__stack_pointer global.get $function-call/foo local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 1680 - i32.store offset=24 - i32.const 1684 - i32.load - drop + i32.store local.get $0 i32.const 1680 i32.load call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - i32.const 1712 - i32.store offset=28 - i32.const 1716 - i32.load - drop i32.const 1 i32.const 1712 i32.load @@ -1670,13 +1624,7 @@ global.get $~lib/memory/__stack_pointer global.get $function-call/foo local.tee $0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 1744 - i32.store offset=32 - i32.const 1748 - i32.load - drop + i32.store local.get $0 i32.const 1 i32.const 2 @@ -1694,7 +1642,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/function-expression.debug.wat b/tests/compiler/function-expression.debug.wat index 8f021dc6a7..4564289ea6 100644 --- a/tests/compiler/function-expression.debug.wat +++ b/tests/compiler/function-expression.debug.wat @@ -11,7 +11,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-expression/f1 (mut i32) (i32.const 32)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-expression/f2 (mut i32) (i32.const 128)) (global $function-expression/f3 (mut i32) (i32.const 160)) (global $function-expression/f4 (mut i32) (i32.const 192)) @@ -87,6 +86,16 @@ local.get $b i32.add ) + (func $function-expression/testOmitted (param $fn i32) (result i32) + i32.const 1 + i32.const 2 + i32.const 2 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $2) + return + ) (func $start:function-expression~anonymous|5 (param $a i32) (param $$1 i32) (result i32) local.get $a ) @@ -138,45 +147,26 @@ ) (func $function-expression/testGlobal (local $0 i32) - (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 + i32.store i32.const 1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/globalFunc - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $3) - local.tee $1 - i32.store offset=4 + local.tee $0 + i32.store i32.const 1 global.set $~argumentsLength - local.get $1 - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 + local.get $0 i32.load call_indirect (type $0) i32.const 25 @@ -191,7 +181,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -204,10 +194,8 @@ (func $function-expression/testLocal (local $localFunc i32) (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -215,38 +203,21 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 544 local.tee $localFunc i32.store i32.const 1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $localFunc - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $3) - local.tee $2 - i32.store offset=8 + local.tee $1 + i32.store offset=4 i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $3 - i32.store offset=12 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 + local.get $1 i32.load call_indirect (type $0) i32.const 25 @@ -261,7 +232,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -2809,60 +2780,46 @@ (local $fieldInst i32) (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 1008 - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store - local.get $4 + local.get $2 call $function-expression/FieldClass#constructor local.tee $fieldInst i32.store offset=4 i32.const 1 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fieldInst - local.set $4 + local.set $2 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $2 i32.store - local.get $4 + local.get $2 call $function-expression/FieldClass#get:fieldFunc - local.tee $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $3) - local.tee $2 - i32.store offset=12 + local.tee $1 + i32.store offset=8 i32.const 1 global.set $~argumentsLength - local.get $2 - local.tee $3 - i32.store offset=16 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 + local.get $1 i32.load call_indirect (type $0) i32.const 25 @@ -2877,39 +2834,24 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) (func $start:function-expression (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - memory.fill + i32.store i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $function-expression/f1 - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $0) i32.const 1 @@ -2924,16 +2866,9 @@ unreachable end i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $function-expression/f2 - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) i32.const 2 @@ -2947,28 +2882,14 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/f3 - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $4) - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength global.get $function-expression/f4 - local.tee $3 - i32.store offset=12 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $3) i32.const 1 @@ -2983,11 +2904,11 @@ unreachable end i32.const 224 - local.set $7 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - local.get $7 + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 3 i32.eq @@ -3001,11 +2922,11 @@ unreachable end i32.const 256 - local.set $7 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - local.get $7 + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 1 i32.eq @@ -3019,11 +2940,11 @@ unreachable end i32.const 288 - local.set $7 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=16 - local.get $7 + local.get $0 + i32.store + local.get $0 call $function-expression/testOmitted i32.const 42 i32.eq @@ -3038,16 +2959,9 @@ end i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn1 - local.tee $4 - i32.store offset=20 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $2) i32.const 3 @@ -3063,16 +2977,9 @@ end i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn2 - local.tee $5 - i32.store offset=24 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $2) i32.const 1 @@ -3088,16 +2995,9 @@ end i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-expression/testOmittedReturn3 - local.tee $6 - i32.store offset=28 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $2) i32.const 42 @@ -3146,7 +3046,7 @@ call $function-expression/testField call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -3270,39 +3170,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $function-expression/testOmitted (param $fn i32) (result i32) - (local $1 i32) - (local $2 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - i32.const 1 - i32.const 2 - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $fn - local.tee $1 - i32.store - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 - i32.load - call_indirect (type $2) - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - return - ) (func $start:function-expression~anonymous|7 (result i32) (local $myFunc i32) (local $1 i32) diff --git a/tests/compiler/function-expression.release.wat b/tests/compiler/function-expression.release.wat index 088eba8e2d..b3f4027a8c 100644 --- a/tests/compiler/function-expression.release.wat +++ b/tests/compiler/function-expression.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func (result i32))) - (type $1 (func (param i32) (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32) (result i32))) + (type $1 (func (param i32 i32) (result i32))) + (type $2 (func (param i32) (result i32))) + (type $3 (func)) (type $4 (func (param i32))) (type $5 (func (param i32 i32))) (type $6 (func (param i32 i32 i32 i32))) @@ -166,7 +166,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$131 + block $__inlined_func$~lib/rt/itcms/Object#unlink$133 local.get $0 i32.load offset=4 i32.const -4 @@ -190,7 +190,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$131 + br $__inlined_func$~lib/rt/itcms/Object#unlink$133 end local.get $0 i32.load offset=8 @@ -1530,7 +1530,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -1540,18 +1540,11 @@ br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 32 - memory.fill - global.get $~lib/memory/__stack_pointer - i32.const 1056 i32.store - i32.const 1060 - i32.load - drop i32.const 1 i32.const 1056 i32.load - call_indirect (type $1) + call_indirect (type $2) i32.const 1 i32.ne if @@ -1562,16 +1555,10 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1152 - i32.store offset=4 - i32.const 1156 - i32.load - drop i32.const 2 i32.const 1152 i32.load - call_indirect (type $1) + call_indirect (type $2) i32.const 2 i32.ne if @@ -1582,21 +1569,9 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store offset=8 - i32.const 1188 - i32.load - drop i32.const 1184 i32.load - call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - i32.const 1216 - i32.store offset=12 - i32.const 1220 - i32.load - drop + call_indirect (type $3) i32.const 1216 i32.load call_indirect (type $0) @@ -1612,9 +1587,12 @@ end global.get $~lib/memory/__stack_pointer i32.const 1248 - i32.store offset=16 + i32.store + i32.const 1 + i32.const 2 i32.const 1248 - call $function-expression/testOmitted + i32.load + call_indirect (type $1) i32.const 3 i32.ne if @@ -1627,9 +1605,12 @@ end global.get $~lib/memory/__stack_pointer i32.const 1280 - i32.store offset=16 + i32.store + i32.const 1 + i32.const 2 i32.const 1280 - call $function-expression/testOmitted + i32.load + call_indirect (type $1) i32.const 1 i32.ne if @@ -1642,9 +1623,12 @@ end global.get $~lib/memory/__stack_pointer i32.const 1312 - i32.store offset=16 + i32.store + i32.const 1 + i32.const 2 i32.const 1312 - call $function-expression/testOmitted + i32.load + call_indirect (type $1) i32.const 42 i32.ne if @@ -1655,17 +1639,11 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1344 - i32.store offset=20 - i32.const 1348 - i32.load - drop i32.const 1 i32.const 2 i32.const 1344 i32.load - call_indirect (type $3) + call_indirect (type $1) i32.const 3 i32.ne if @@ -1676,17 +1654,11 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1376 - i32.store offset=24 - i32.const 1380 - i32.load - drop i32.const 1 i32.const 2 i32.const 1376 i32.load - call_indirect (type $3) + call_indirect (type $1) i32.const 1 i32.ne if @@ -1697,17 +1669,11 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1408 - i32.store offset=28 - i32.const 1412 - i32.load - drop i32.const 1 i32.const 2 i32.const 1408 i32.load - call_indirect (type $3) + call_indirect (type $1) i32.const 42 i32.ne if @@ -1719,7 +1685,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1727,33 +1693,18 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1504 i32.store - i32.const 1508 - i32.load - drop global.get $~lib/memory/__stack_pointer i32.const 1504 i32.load call_indirect (type $0) - local.tee $1 - i32.store offset=4 - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - drop + local.tee $0 + i32.store i32.const 1 - local.get $1 + local.get $0 i32.load - call_indirect (type $1) + call_indirect (type $2) i32.const 25 i32.ne if @@ -1765,11 +1716,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1780,33 +1731,18 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 1568 i32.store global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1568 - i32.store offset=4 - i32.const 1572 - i32.load - drop - global.get $~lib/memory/__stack_pointer i32.const 1568 i32.load call_indirect (type $0) - local.tee $1 - i32.store offset=8 - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop + local.tee $0 + i32.store offset=4 i32.const 1 - local.get $1 + local.get $0 i32.load - call_indirect (type $1) + call_indirect (type $2) i32.const 25 i32.ne if @@ -1818,7 +1754,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer memory.size @@ -1854,7 +1790,7 @@ i32.const 1888 global.set $~lib/rt/itcms/fromSpace global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1862,9 +1798,11 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 20 - memory.fill + i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 2032 @@ -1885,18 +1823,18 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 2032 i32.store offset=8 - local.get $2 + local.get $1 i32.const 2032 i32.store - local.get $2 + local.get $1 i32.eqz if i32.const 0 @@ -1913,7 +1851,7 @@ i32.and i32.eq if - local.get $2 + local.get $1 i32.const 20 i32.sub i32.load offset=4 @@ -1944,35 +1882,22 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.load - local.tee $1 - i32.store offset=8 local.get $1 - i32.load offset=4 - drop + i32.store global.get $~lib/memory/__stack_pointer local.get $1 i32.load + i32.load call_indirect (type $0) - local.tee $1 - i32.store offset=12 - local.get $1 - i32.store offset=16 - local.get $1 - i32.load offset=4 - drop + local.tee $0 + i32.store offset=8 i32.const 1 - local.get $1 + local.get $0 i32.load - call_indirect (type $1) + call_indirect (type $2) i32.const 25 i32.ne if @@ -1984,12 +1909,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer call $function-expression/semanticallyAnonymous global.get $~lib/memory/__stack_pointer - i32.const 32 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -2001,41 +1926,6 @@ call $~lib/builtins/abort unreachable ) - (func $function-expression/testOmitted (param $0 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2156 - i32.lt_s - if - i32.const 34944 - i32.const 34992 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - drop - i32.const 1 - i32.const 2 - local.get $0 - i32.load - call_indirect (type $3) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $start:function-expression~anonymous|7 (result i32) global.get $~lib/memory/__stack_pointer i32.const 4 diff --git a/tests/compiler/function-types.debug.wat b/tests/compiler/function-types.debug.wat index 168e1e2876..06b04a6227 100644 --- a/tests/compiler/function-types.debug.wat +++ b/tests/compiler/function-types.debug.wat @@ -1,15 +1,14 @@ (module (type $0 (func (param i32 i32) (result i32))) (type $1 (func (result i32))) - (type $2 (func)) - (type $3 (func (param i32 i32 i32) (result i32))) + (type $2 (func (param i32 i32 i32) (result i32))) + (type $3 (func)) (type $4 (func (param i64 i64) (result i64))) (type $5 (func (param f64 f64) (result f64))) (type $6 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 204)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32972)) @@ -54,12 +53,42 @@ i32.const 160 return ) + (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $fn + i32.load + call_indirect (type $0) + return + ) + (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + call $function-types/makeAdder + i32.load + call_indirect (type $0) + return + ) (func $function-types/addI32 (param $a i32) (param $b i32) (result i32) local.get $a local.get $b i32.add return ) + (func $function-types/makeAndAdd (param $a i32) (param $b i32) (param $adder i32) (result i32) + local.get $a + local.get $b + i32.const 2 + global.set $~argumentsLength + local.get $adder + i32.load + call_indirect (type $0) + return + ) (func $~start call $start:function-types ) @@ -119,34 +148,21 @@ ) (func $start:function-types (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store call $function-types/makeAdder global.set $function-types/i32Adder i32.const 1 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-types/i32Adder - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $0) i32.const 3 @@ -164,16 +180,9 @@ global.set $function-types/i64Adder i64.const 10 i64.const 20 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength global.get $function-types/i64Adder - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $4) i64.const 30 @@ -189,16 +198,9 @@ end f64.const 1.5 f64.const 2.5 - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength call $function-types/makeAdder - local.tee $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $5) f64.const 4 @@ -215,11 +217,11 @@ i32.const 2 i32.const 3 global.get $function-types/i32Adder - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $3 + local.get $0 + i32.store + local.get $0 call $function-types/doAddWithFn i32.const 5 i32.eq @@ -249,11 +251,11 @@ i32.const 4 i32.const 5 i32.const 192 - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $3 + local.get $0 + i32.store + local.get $0 call $function-types/doAddWithFn i32.const 9 i32.eq @@ -286,11 +288,11 @@ i32.const 1 i32.const 2 call $function-types/makeAdder - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $3 + local.get $0 + i32.store + local.get $0 call $function-types/makeAndAdd i32.const 3 i32.eq @@ -304,107 +306,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - ) - (func $function-types/doAddWithFn (param $a i32) (param $b i32) (param $fn i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.get $b - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $fn - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 - i32.load - call_indirect (type $0) - local.set $4 - global.get $~lib/memory/__stack_pointer i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 - return - ) - (func $function-types/doAdd (param $a i32) (param $b i32) (result i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.get $b - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - call $function-types/makeAdder - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 - i32.load - call_indirect (type $0) - local.set $3 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - return - ) - (func $function-types/makeAndAdd (param $a i32) (param $b i32) (param $adder i32) (result i32) - (local $3 i32) - (local $4 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $a - local.get $b - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $adder - local.tee $3 - i32.store - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 - i32.load - call_indirect (type $0) - local.set $4 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - return ) ) diff --git a/tests/compiler/function-types.release.wat b/tests/compiler/function-types.release.wat index 345603d7ce..726e8230ce 100644 --- a/tests/compiler/function-types.release.wat +++ b/tests/compiler/function-types.release.wat @@ -4,7 +4,6 @@ (type $2 (func (param f64 f64) (result f64))) (type $3 (func (param i32 i32 i32 i32))) (type $4 (func)) - (type $5 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $function-types/i32Adder (mut i32) (i32.const 0)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33996)) @@ -37,7 +36,7 @@ (func $~start (local $0 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -46,19 +45,10 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store i32.const 1056 global.set $function-types/i32Adder - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1060 - i32.load - drop i32.const 1 i32.const 2 i32.const 1056 @@ -74,12 +64,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1152 - i32.store offset=4 - i32.const 1156 - i32.load - drop i64.const 10 i64.const 20 i32.const 1152 @@ -95,12 +79,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1184 - i32.store offset=8 - i32.const 1188 - i32.load - drop f64.const 1.5 f64.const 2.5 i32.const 1184 @@ -119,11 +97,12 @@ global.get $~lib/memory/__stack_pointer global.get $function-types/i32Adder local.tee $0 - i32.store offset=12 + i32.store i32.const 2 i32.const 3 local.get $0 - call $function-types/doAddWithFn + i32.load + call_indirect (type $0) i32.const 5 i32.ne if @@ -134,32 +113,11 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1228 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store - i32.const 1060 - i32.load - drop i32.const 3 i32.const 4 i32.const 1056 i32.load call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer i32.const 7 i32.ne if @@ -172,11 +130,12 @@ end global.get $~lib/memory/__stack_pointer i32.const 1216 - i32.store offset=12 + i32.store i32.const 4 i32.const 5 i32.const 1216 - call $function-types/doAddWithFn + i32.load + call_indirect (type $0) i32.const 9 i32.ne if @@ -207,7 +166,8 @@ i32.const 1 i32.const 2 i32.const 1056 - call $function-types/doAddWithFn + i32.load + call_indirect (type $0) global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -224,11 +184,12 @@ end global.get $~lib/memory/__stack_pointer i32.const 1056 - i32.store offset=12 + i32.store i32.const 1 i32.const 2 i32.const 1056 - call $function-types/doAddWithFn + i32.load + call_indirect (type $0) i32.const 3 i32.ne if @@ -240,7 +201,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -252,39 +213,4 @@ call $~lib/builtins/abort unreachable ) - (func $function-types/doAddWithFn (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1228 - i32.lt_s - if - i32.const 34016 - i32.const 34064 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop - local.get $0 - local.get $1 - local.get $2 - i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - ) ) diff --git a/tests/compiler/getter-call.debug.wat b/tests/compiler/getter-call.debug.wat index a0eac13ecd..7ac0d77688 100644 --- a/tests/compiler/getter-call.debug.wat +++ b/tests/compiler/getter-call.debug.wat @@ -24,7 +24,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 448)) (global $~lib/memory/__data_end i32 (i32.const 476)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33244)) @@ -2392,9 +2391,8 @@ (func $getter-call/test (result i32) (local $c i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -2403,36 +2401,26 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 call $getter-call/C#constructor local.tee $c i32.store - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $c - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - call $getter-call/C#get:x - local.tee $1 - i32.store offset=8 local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env + i32.store offset=4 local.get $1 + call $getter-call/C#get:x i32.load call_indirect (type $4) - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) (func $~lib/function/Function<%28%29=>i32>#__visit (param $this i32) (param $cookie i32) diff --git a/tests/compiler/getter-call.release.wat b/tests/compiler/getter-call.release.wat index 10bc074201..907d6feeec 100644 --- a/tests/compiler/getter-call.release.wat +++ b/tests/compiler/getter-call.release.wat @@ -1471,7 +1471,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1483,9 +1483,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub @@ -1541,18 +1538,12 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 1456 - i32.store offset=8 - i32.const 1460 - i32.load - drop i32.const 1456 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 42 diff --git a/tests/compiler/infer-generic.debug.wat b/tests/compiler/infer-generic.debug.wat index 0a54635425..e5325dead1 100644 --- a/tests/compiler/infer-generic.debug.wat +++ b/tests/compiler/infer-generic.debug.wat @@ -18,7 +18,6 @@ (global $~lib/shared/runtime/Runtime.Minimal i32 (i32.const 1)) (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -2493,28 +2492,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -2522,11 +2517,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -2537,11 +2532,11 @@ if local.get $acc local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -2550,21 +2545,14 @@ f32.load local.get $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $5) local.set $acc @@ -2576,12 +2564,12 @@ end end local.get $acc - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $infer-generic/Ref#constructor (param $this i32) (result i32) diff --git a/tests/compiler/infer-generic.release.wat b/tests/compiler/infer-generic.release.wat index b6e75efdf5..c09c4b901d 100644 --- a/tests/compiler/infer-generic.release.wat +++ b/tests/compiler/infer-generic.release.wat @@ -1638,8 +1638,8 @@ ) (func $~start (local $0 i32) - (local $1 f32) - (local $2 i32) + (local $1 i32) + (local $2 f32) (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer @@ -1664,7 +1664,7 @@ i32.const 1200 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -1675,66 +1675,57 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store i32.const 1164 i32.load - local.set $4 + local.set $3 loop $for-loop|0 global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.const 1164 i32.load - local.tee $3 + local.tee $4 local.get $3 local.get $4 - i32.gt_s + i32.lt_s select i32.lt_s if global.get $~lib/memory/__stack_pointer i32.const 1152 - i32.store offset=8 + i32.store offset=4 i32.const 1156 i32.load - local.get $0 + local.get $1 i32.const 2 i32.shl i32.add f32.load - local.set $1 + local.set $2 global.get $~lib/memory/__stack_pointer i32.const 1152 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1200 - i32.store offset=4 - i32.const 1204 - i32.load - drop + local.get $0 local.get $2 local.get $1 - local.get $0 i32.const 1152 i32.const 1200 i32.load call_indirect (type $2) - local.set $2 - local.get $0 + local.set $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|0 end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer memory.size diff --git a/tests/compiler/inlining.debug.wat b/tests/compiler/inlining.debug.wat index 14fc8dbf97..1478d40aca 100644 --- a/tests/compiler/inlining.debug.wat +++ b/tests/compiler/inlining.debug.wat @@ -13,7 +13,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $inlining/constantGlobal i32 (i32.const 1)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -81,24 +80,20 @@ (local $c|17 i32) (local $d|18 i32) (local $a|19 i32) - (local $20 i32) - (local $a|21 i32) - (local $b|22 i32) + (local $a|20 i32) + (local $b|21 i32) (local $foo i32) (local $this i32) - (local $a|25 i32) - (local $b|26 i32) + (local $a|24 i32) + (local $b|25 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 f32.const -1 local.set $a f64.const -2 @@ -249,19 +244,12 @@ i32.const 0 local.set $a|19 i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength block $inlining/func_fe|inlined.0 (result i32) i32.const 80 br $inlining/func_fe|inlined.0 end - local.tee $20 - i32.store - local.get $20 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $20 i32.load call_indirect (type $0) i32.const 2 @@ -277,11 +265,11 @@ end block $inlining/Foo.method_static|inlined.0 (result i32) i32.const 42 - local.set $a|21 + local.set $a|20 i32.const 2 - local.set $b|22 - local.get $a|21 - local.get $b|22 + local.set $b|21 + local.get $a|20 + local.get $b|21 i32.add br $inlining/Foo.method_static|inlined.0 end @@ -291,16 +279,16 @@ global.get $~lib/memory/__stack_pointer i32.const 123 local.tee $foo - i32.store offset=4 + i32.store block $inlining/Foo#method_this|inlined.0 (result i32) global.get $~lib/memory/__stack_pointer local.get $foo local.tee $this - i32.store offset=8 + i32.store offset=4 i32.const 43 - local.set $a|25 + local.set $a|24 i32.const 3 - local.set $b|26 + local.set $b|25 local.get $this br $inlining/Foo#method_this|inlined.0 end @@ -316,7 +304,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/inlining.release.wat b/tests/compiler/inlining.release.wat index d676cff9a4..bb306de122 100644 --- a/tests/compiler/inlining.release.wat +++ b/tests/compiler/inlining.release.wat @@ -1544,7 +1544,7 @@ (local $1 i32) (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1555,15 +1555,6 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1104 - i32.store - i32.const 1108 - i32.load - drop i32.const 2 i32.const 1104 i32.load @@ -1571,12 +1562,12 @@ drop global.get $~lib/memory/__stack_pointer i32.const 123 - i32.store offset=4 + i32.store global.get $~lib/memory/__stack_pointer i32.const 123 - i32.store offset=8 + i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer memory.size diff --git a/tests/compiler/issues/2707.debug.wat b/tests/compiler/issues/2707.debug.wat index 21f9bb4007..bf7710636a 100644 --- a/tests/compiler/issues/2707.debug.wat +++ b/tests/compiler/issues/2707.debug.wat @@ -27,7 +27,6 @@ (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) (global $~lib/native/ASC_LOW_MEMORY_LIMIT i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 496)) (global $~lib/memory/__data_end i32 (i32.const 524)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33292)) @@ -2437,15 +2436,14 @@ (func $start:issues/2707 (local $0 i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store memory.size i32.const 16 i32.shl @@ -2468,26 +2466,19 @@ i32.const 4 i32.const 64 call $~lib/rt/__newArray - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 - global.get $~lib/memory/__stack_pointer + local.get $1 i32.const 1 global.set $~argumentsLength global.get $issues/2707/func - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/issues/2707.release.wat b/tests/compiler/issues/2707.release.wat index d396e6d6ed..bdafcad22f 100644 --- a/tests/compiler/issues/2707.release.wat +++ b/tests/compiler/issues/2707.release.wat @@ -1467,7 +1467,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner0 @@ -1476,8 +1476,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store memory.size i32.const 16 i32.shl @@ -1601,19 +1601,13 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1056 - i32.store offset=4 - i32.const 1060 - i32.load - drop local.get $2 i32.const 1056 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/resolve-function-expression.debug.wat b/tests/compiler/resolve-function-expression.debug.wat index 67f8d04f0a..41b9a28c81 100644 --- a/tests/compiler/resolve-function-expression.debug.wat +++ b/tests/compiler/resolve-function-expression.debug.wat @@ -14,7 +14,6 @@ (type $12 (func (param i32 i32 i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/itcms/total (mut i32) (i32.const 0)) (global $~lib/rt/itcms/threshold (mut i32) (i32.const 0)) (global $~lib/rt/itcms/state (mut i32) (i32.const 0)) @@ -2992,31 +2991,18 @@ ) (func $start:resolve-function-expression (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store i32.const 2 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 32 - local.tee $0 - i32.store - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $0) i32.const 42 @@ -3031,16 +3017,9 @@ unreachable end i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 144 - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) i32.const 42 @@ -3072,25 +3051,18 @@ call $~lib/rt/itcms/initLazy global.set $~lib/rt/itcms/fromSpace i32.const 0 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength i32.const 176 - local.tee $2 - i32.store offset=12 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) i32.const 10 call $~lib/number/I32#toString - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 + local.get $0 + i32.store + local.get $0 i32.const 2384 call $~lib/string/String.__eq i32.eqz @@ -3103,7 +3075,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/resolve-function-expression.release.wat b/tests/compiler/resolve-function-expression.release.wat index f7c37d25ff..ad27a4cfac 100644 --- a/tests/compiler/resolve-function-expression.release.wat +++ b/tests/compiler/resolve-function-expression.release.wat @@ -1842,7 +1842,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -1851,17 +1851,8 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 1056 + i32.const 0 i32.store - i32.const 1060 - i32.load - drop i32.const 2 i32.const 1056 i32.load @@ -1876,12 +1867,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1172 - i32.load - drop i32.const 1 i32.const 1168 i32.load @@ -1928,12 +1913,6 @@ i32.store i32.const 1744 global.set $~lib/rt/itcms/fromSpace - global.get $~lib/memory/__stack_pointer - i32.const 1200 - i32.store offset=12 - i32.const 1204 - i32.load - drop i32.const 0 i32.const 1200 i32.load @@ -1942,7 +1921,7 @@ local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=8 + i32.store block $__inlined_func$~lib/string/String.__eq$1 (result i32) global.get $~lib/memory/__stack_pointer i32.const 8 @@ -2092,7 +2071,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/resolve-ternary.debug.wat b/tests/compiler/resolve-ternary.debug.wat index 5ab19a9dd4..20c870d9c4 100644 --- a/tests/compiler/resolve-ternary.debug.wat +++ b/tests/compiler/resolve-ternary.debug.wat @@ -43,7 +43,6 @@ (global $resolve-ternary/f1 i32 (i32.const 3472)) (global $resolve-ternary/f2 i32 (i32.const 3504)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 3584)) (global $~lib/memory/__data_end i32 (i32.const 3608)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36376)) @@ -4397,20 +4396,14 @@ ) (func $start:resolve-ternary (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store memory.size i32.const 16 i32.shl @@ -4436,11 +4429,11 @@ end i32.const 10 call $~lib/number/I32#toString - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store - local.get $3 + local.get $0 i32.const 2208 call $~lib/string/String.__eq i32.eqz @@ -4460,11 +4453,11 @@ end i32.const 0 call $~lib/number/F64#toString - local.set $3 + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store - local.get $3 + local.get $0 i32.const 3440 call $~lib/string/String.__eq i32.eqz @@ -4477,7 +4470,6 @@ unreachable end i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4486,12 +4478,6 @@ else global.get $resolve-ternary/f2 end - local.tee $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 i32.load call_indirect (type $0) i32.const 2 @@ -4506,7 +4492,6 @@ unreachable end i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4515,12 +4500,6 @@ else i32.const 3568 end - local.tee $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) i32.const 4 @@ -4535,7 +4514,6 @@ unreachable end i32.const 1 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength global.get $resolve-ternary/b @@ -4544,12 +4522,6 @@ else i32.const 3568 end - local.tee $2 - i32.store offset=12 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) i32.const 3 @@ -4564,7 +4536,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/resolve-ternary.release.wat b/tests/compiler/resolve-ternary.release.wat index 9bf96ae013..8fa84ef7ad 100644 --- a/tests/compiler/resolve-ternary.release.wat +++ b/tests/compiler/resolve-ternary.release.wat @@ -2492,7 +2492,7 @@ (local $5 i64) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -2501,11 +2501,8 @@ i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store memory.size i32.const 16 i32.shl @@ -2722,12 +2719,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4496 - i32.store offset=4 - i32.const 4500 - i32.load - drop i32.const 1 i32.const 4496 i32.load @@ -2742,12 +2733,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4560 - i32.store offset=8 - i32.const 4564 - i32.load - drop i32.const 1 i32.const 4560 i32.load @@ -2762,12 +2747,6 @@ call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 4528 - i32.store offset=12 - i32.const 4532 - i32.load - drop i32.const 1 i32.const 4528 i32.load @@ -2783,7 +2762,7 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return diff --git a/tests/compiler/return.debug.wat b/tests/compiler/return.debug.wat index 27eade2510..3a0fe739ab 100644 --- a/tests/compiler/return.debug.wat +++ b/tests/compiler/return.debug.wat @@ -5,7 +5,6 @@ (type $3 (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) @@ -23,52 +22,20 @@ call $return/nop ) (func $return/testVoidReturnFunction (param $cond i32) (param $fn i32) - (local $2 i32) - (local $3 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store local.get $cond if - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer return end - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $fn - local.tee $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer return ) (func $return/testVoidReturn (param $cond i32) diff --git a/tests/compiler/return.release.wat b/tests/compiler/return.release.wat index 801756e86a..4509ebf226 100644 --- a/tests/compiler/return.release.wat +++ b/tests/compiler/return.release.wat @@ -1,8 +1,8 @@ (module (type $0 (func)) - (type $1 (func (param i32 i32))) - (type $2 (func (param i32))) - (type $3 (func (param i32 i32 i32 i32))) + (type $1 (func (param i32))) + (type $2 (func (param i32 i32 i32 i32))) + (type $3 (func (param i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33836)) (memory $0 1) @@ -16,56 +16,6 @@ (start $~start) (func $start:return~anonymous|0 ) - (func $return/testVoidReturnFunction (param $0 i32) (param $1 i32) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - if - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - local.get $1 - i32.load offset=4 - drop - local.get $1 - i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - return - end - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop - local.get $1 - i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - ) (func $return/testVoidReturn (param $0 i32) ) (func $~start @@ -90,9 +40,9 @@ global.get $~lib/memory/__stack_pointer i32.const 1056 i32.store - i32.const 1 i32.const 1056 - call $return/testVoidReturnFunction + i32.load + call_indirect (type $0) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add @@ -117,9 +67,9 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - local.get $0 local.get $1 - call $return/testVoidReturnFunction + i32.load + call_indirect (type $0) global.get $~lib/memory/__stack_pointer i32.const 4 i32.add diff --git a/tests/compiler/std/array-access.debug.wat b/tests/compiler/std/array-access.debug.wat index 5088a5fd0f..951850584d 100644 --- a/tests/compiler/std/array-access.debug.wat +++ b/tests/compiler/std/array-access.debug.wat @@ -11,7 +11,6 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 284)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 33052)) (global $~lib/memory/__heap_base i32 (i32.const 33052)) @@ -795,41 +794,33 @@ ) (func $std/array-access/functionArrayElementCall (param $a i32) (result i32) (local $1 i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 123 - global.get $~lib/memory/__stack_pointer i32.const 1 global.set $~argumentsLength local.get $a - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array<%28i32%29=>i32>#__get - local.tee $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $1 i32.load call_indirect (type $0) - local.set $2 + local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $1 return ) (func $export:std/array-access/i32ArrayArrayElementAccess (param $0 i32) (result i32) diff --git a/tests/compiler/std/array-access.release.wat b/tests/compiler/std/array-access.release.wat index e6abce78bf..d9ec8e7386 100644 --- a/tests/compiler/std/array-access.release.wat +++ b/tests/compiler/std/array-access.release.wat @@ -562,7 +562,7 @@ local.get $0 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -570,22 +570,15 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store - global.get $~lib/memory/__stack_pointer + i32.const 123 local.get $0 i32.const 0 call $~lib/array/Array<~lib/array/Array>#__get - local.tee $0 - i32.store offset=4 - local.get $0 - i32.load offset=4 - drop - i32.const 123 - local.get $0 i32.load call_indirect (type $0) unreachable diff --git a/tests/compiler/std/array.debug.wat b/tests/compiler/std/array.debug.wat index cf43109fb2..76974815e0 100644 --- a/tests/compiler/std/array.debug.wat +++ b/tests/compiler/std/array.debug.wat @@ -56,7 +56,6 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/math/random_state0_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state1_64 (mut i64) (i64.const 0)) (global $~lib/math/random_state0_32 (mut i32) (i32.const 0)) @@ -4327,21 +4326,7 @@ (local $b f32) (local $min f32) (local $max f32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -4394,16 +4379,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $7) i32.const 0 @@ -4433,16 +4411,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $7) i32.const 0 @@ -4488,16 +4459,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $7) i32.const 0 @@ -4535,10 +4499,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -4598,15 +4713,6 @@ (local $k i32) (local $a f32) (local $b f32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -4698,16 +4804,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $7) i32.const 0 @@ -4744,10 +4843,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) (local $ia i32) @@ -4790,21 +4885,7 @@ (local $b f64) (local $min f64) (local $max f64) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -4857,16 +4938,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -4896,16 +4970,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -4951,16 +5018,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -4998,10 +5058,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -5010,15 +5221,6 @@ (local $k i32) (local $a f64) (local $b f64) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -5110,16 +5312,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -5156,10 +5351,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) (local $ia i64) @@ -5202,21 +5393,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -5269,16 +5446,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -5308,16 +5478,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -5363,16 +5526,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -5410,10 +5566,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -5422,15 +5729,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -5522,16 +5820,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -5568,10 +5859,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -5585,21 +5872,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -5652,16 +5925,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -5691,16 +5957,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -5746,16 +6005,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -5793,10 +6045,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -5805,15 +6208,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -5905,16 +6299,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -5951,10 +6338,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -13895,26 +14278,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -13922,11 +14301,11 @@ local.get $len local.tee $4 local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -13936,11 +14315,11 @@ i32.lt_s if local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -13949,31 +14328,24 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $3) if local.get $i - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $i @@ -13984,12 +14356,12 @@ end end i32.const -1 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $start:std/array~anonymous|3 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14054,24 +14426,20 @@ (func $~lib/array/Array#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -14082,11 +14450,11 @@ i32.ge_s if local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 + local.get $3 + i32.store offset=4 + local.get $3 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14095,31 +14463,24 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $3) if local.get $i - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end local.get $i @@ -14130,12 +14491,12 @@ end end i32.const -1 - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) (func $start:std/array~anonymous|9 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14173,26 +14534,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14200,11 +14557,11 @@ local.get $len local.tee $4 local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14214,11 +14571,11 @@ i32.lt_s if local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14227,32 +14584,25 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $3) i32.eqz if i32.const 0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $i @@ -14263,12 +14613,12 @@ end end i32.const 1 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $start:std/array~anonymous|12 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14336,26 +14686,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14363,11 +14709,11 @@ local.get $len local.tee $4 local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14377,11 +14723,11 @@ i32.lt_s if local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14390,31 +14736,24 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $3) if i32.const 1 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return end local.get $i @@ -14425,12 +14764,12 @@ end end i32.const 0 - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $start:std/array~anonymous|17 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -14498,26 +14837,22 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -14525,11 +14860,11 @@ local.get $len local.tee $4 local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/array/Array#get:length_ local.tee $5 local.get $4 @@ -14539,11 +14874,11 @@ i32.lt_s if local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=8 - local.get $7 + local.get $6 + i32.store offset=4 + local.get $6 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14552,21 +14887,14 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $5) local.get $i @@ -14577,7 +14905,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -14778,24 +15106,25 @@ (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) (local $result i32) - (local $10 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -14807,11 +15136,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array<~lib/string/String>#get:dataStart local.set $outStart i32.const 0 @@ -14821,11 +15150,11 @@ local.get $len local.tee $6 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -14836,11 +15165,11 @@ if global.get $~lib/memory/__stack_pointer local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 - local.get $10 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14849,25 +15178,18 @@ i32.load local.get $i local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $3) local.tee $result - i32.store offset=16 + i32.store offset=12 local.get $outStart local.get $i i32.const 2 @@ -14889,12 +15211,12 @@ end end local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $~lib/array/Array#map (param $this i32) (param $fn i32) (result i32) @@ -14904,11 +15226,10 @@ (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) (local $result f32) - (local $10 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -14916,14 +15237,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -14935,11 +15256,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -14949,11 +15270,11 @@ local.get $len local.tee $6 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -14963,11 +15284,11 @@ i32.lt_s if local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 - local.get $10 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -14976,21 +15297,14 @@ i32.load local.get $i local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $18) local.set $result @@ -15011,12 +15325,12 @@ end end local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $start:std/array~anonymous|27 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15058,11 +15372,10 @@ (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) (local $result i32) - (local $10 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -15070,14 +15383,14 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -15089,11 +15402,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -15103,11 +15416,11 @@ local.get $len local.tee $6 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15117,11 +15430,11 @@ i32.lt_s if local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=12 - local.get $10 + local.get $9 + i32.store offset=8 + local.get $9 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15130,21 +15443,14 @@ i32.load local.get $i local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $3) local.set $result @@ -15165,12 +15471,12 @@ end end local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $start:std/array~anonymous|29 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15212,9 +15518,8 @@ (local $6 i32) (local $value i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -15223,9 +15528,6 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.const 2 i32.const 4 i32.const 0 @@ -15235,11 +15537,11 @@ i32.const 0 local.set $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15247,11 +15549,11 @@ local.get $len local.tee $5 local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.tee $6 local.get $5 @@ -15261,11 +15563,11 @@ i32.lt_s if local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15276,30 +15578,23 @@ local.get $value local.get $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=8 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $3) if local.get $result - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=4 - local.get $9 + local.get $8 local.get $value call $~lib/array/Array#push drop @@ -15312,12 +15607,12 @@ end end local.get $result - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $start:std/array~anonymous|31 (param $value i32) (param $_ i32) (param $array i32) (result i32) @@ -15394,28 +15689,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15423,11 +15714,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15438,11 +15729,11 @@ if local.get $acc local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15451,21 +15742,14 @@ i32.load local.get $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $4) local.set $acc @@ -15477,12 +15761,12 @@ end end local.get $acc - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $~lib/array/Array#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) @@ -15492,28 +15776,24 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.set $len loop $for-loop|0 @@ -15521,11 +15801,11 @@ local.get $len local.tee $6 local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 + local.get $8 call $~lib/array/Array#get:length_ local.tee $7 local.get $6 @@ -15536,11 +15816,11 @@ if local.get $acc local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 - i32.store offset=8 - local.get $9 + local.get $8 + i32.store offset=4 + local.get $8 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15549,21 +15829,14 @@ i32.load local.get $i local.get $this - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $4) local.set $acc @@ -15575,12 +15848,12 @@ end end local.get $acc - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $start:std/array~anonymous|38 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) @@ -15646,26 +15919,22 @@ (local $acc i32) (local $i i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $initialValue local.set $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -15677,11 +15946,11 @@ if local.get $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15690,21 +15959,14 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $5 - i32.store offset=4 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -15716,38 +15978,34 @@ end end local.get $acc - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return ) (func $~lib/array/Array#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) (local $acc i32) (local $i i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $initialValue local.set $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 call $~lib/array/Array#get:length_ i32.const 1 i32.sub @@ -15759,11 +16017,11 @@ if local.get $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 + local.get $5 + i32.store offset=4 + local.get $5 call $~lib/array/Array#get:dataStart local.get $i i32.const 2 @@ -15772,21 +16030,14 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $5 - i32.store offset=4 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -15798,12 +16049,12 @@ end end local.get $acc - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return ) (func $start:std/array~anonymous|45 (param $prev i32) (param $current i32) (param $_ i32) (param $array i32) (result i32) @@ -15996,13 +16247,10 @@ (local $3 i32) (local $a f32) (local $b f32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 f32) - (local $b|10 f32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 f32) + (local $b|8 f32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -16013,32 +16261,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -16048,7 +16293,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16080,16 +16325,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $7) i32.const 0 @@ -16111,16 +16349,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $7) i32.const 0 @@ -16141,41 +16372,34 @@ end local.get $ptr f32.load - local.set $a|9 + local.set $a|7 local.get $ptr f32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $7) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select f32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select f32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16187,14 +16411,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16258,11 +16482,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -16274,13 +16498,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -16289,11 +16513,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16313,11 +16537,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -16331,15 +16555,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -16348,11 +16572,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16363,14 +16587,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -16383,7 +16607,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -16393,26 +16617,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -16440,27 +16664,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -16470,17 +16694,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -16489,7 +16713,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -16594,13 +16818,10 @@ (local $3 i32) (local $a f64) (local $b f64) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 f64) - (local $b|10 f64) - (local $11 i32) - (local $c|12 i32) + (local $a|7 f64) + (local $b|8 f64) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -16611,32 +16832,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -16646,7 +16864,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16678,16 +16896,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -16709,16 +16920,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -16739,41 +16943,34 @@ end local.get $ptr f64.load - local.set $a|9 + local.set $a|7 local.get $ptr f64.load offset=8 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select f64.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select f64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16785,14 +16982,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -16856,11 +17053,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -16872,13 +17069,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -16887,11 +17084,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16911,11 +17108,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -16929,15 +17126,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -16946,11 +17143,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -16961,14 +17158,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -16981,7 +17178,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -16991,26 +17188,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -17038,27 +17235,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -17068,17 +17265,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -17087,7 +17284,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -17463,13 +17660,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -17480,32 +17674,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -17515,7 +17706,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -17547,16 +17738,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -17578,16 +17762,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -17608,41 +17785,34 @@ end local.get $ptr i32.load - local.set $a|9 + local.set $a|7 local.get $ptr i32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -17654,14 +17824,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -17725,11 +17895,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -17741,13 +17911,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -17756,11 +17926,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -17780,11 +17950,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -17798,15 +17968,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -17815,11 +17985,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -17830,14 +18000,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -17850,7 +18020,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -17860,26 +18030,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -17907,27 +18077,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -17937,17 +18107,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -17956,7 +18126,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -18059,13 +18229,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -18076,32 +18243,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -18111,7 +18275,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -18143,16 +18307,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -18174,16 +18331,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -18204,41 +18354,34 @@ end local.get $ptr i32.load - local.set $a|9 + local.set $a|7 local.get $ptr i32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -18250,14 +18393,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -18321,11 +18464,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -18337,13 +18480,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -18352,11 +18495,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -18376,11 +18519,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -18394,15 +18537,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -18411,11 +18554,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -18426,14 +18569,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -18446,7 +18589,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -18456,26 +18599,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -18503,27 +18646,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -18533,17 +18676,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -18552,7 +18695,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -18761,23 +18904,22 @@ (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 1 local.set $i local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/array/Array#get:length local.set $len loop $for-loop|0 @@ -18786,45 +18928,38 @@ i32.lt_s if local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $i i32.const 1 i32.sub call $~lib/array/Array#__get local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $i call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -18835,12 +18970,12 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $std/array/assertSorted (param $arr i32) (param $comparator i32) @@ -19179,19 +19314,16 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill i32.const 0 i32.const 1 @@ -19252,27 +19384,20 @@ local.tee $max i32.store offset=12 local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $b - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=24 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -19307,27 +19432,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $max - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=28 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -19374,27 +19492,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $min - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=32 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -19433,38 +19544,37 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) - (local $5 i32) - (local $6 i32) (local $k i32) (local $tmp i32) - (local $9 i32) - (local $10 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $i local.get $right i32.eq if local.get $i - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return end local.get $i @@ -19475,11 +19585,11 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 1 @@ -19489,21 +19599,14 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -19520,32 +19623,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -19576,7 +19672,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=16 + i32.store offset=8 local.get $ptr local.get $i i32.const 2 @@ -19619,32 +19715,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $9 - i32.store offset=20 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -19662,12 +19751,12 @@ end end local.get $j - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -19678,16 +19767,17 @@ (local $a i32) (local $b i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $m i32.const 1 i32.sub @@ -19782,27 +19872,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=8 - local.get $13 + local.get $12 local.get $b - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=12 - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store offset=16 - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -19840,7 +19923,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19848,13 +19931,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -19865,29 +19945,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $len i32.const 48 @@ -19898,7 +19978,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -19933,27 +20013,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=16 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -19978,27 +20051,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=20 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -20020,54 +20086,47 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|9 - i32.store offset=24 + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|10 - i32.store offset=28 - local.get $a|9 - local.set $37 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 - local.get $b|10 - local.set $37 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=32 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -20079,14 +20138,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -20150,11 +20209,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -20166,13 +20225,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -20181,11 +20240,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -20205,11 +20264,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -20223,15 +20282,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -20240,11 +20299,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -20255,14 +20314,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -20275,7 +20334,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -20285,26 +20344,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -20332,27 +20391,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -20362,17 +20421,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -20381,7 +20440,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20992,19 +21051,16 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill i32.const 0 i32.const 1 @@ -21065,27 +21121,20 @@ local.tee $max i32.store offset=12 local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $b - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=24 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -21120,27 +21169,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $max - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=28 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -21187,27 +21229,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $min - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=32 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -21246,38 +21281,37 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/array/Array> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) - (local $5 i32) - (local $6 i32) (local $k i32) (local $tmp i32) - (local $9 i32) - (local $10 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $i local.get $right i32.eq if local.get $i - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return end local.get $i @@ -21288,11 +21322,11 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 1 @@ -21302,21 +21336,14 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -21333,32 +21360,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -21389,7 +21409,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=16 + i32.store offset=8 local.get $ptr local.get $i i32.const 2 @@ -21432,32 +21452,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $9 - i32.store offset=20 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -21475,12 +21488,12 @@ end end local.get $j - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return ) (func $~lib/util/sort/mergeRuns<~lib/array/Array> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -21491,16 +21504,17 @@ (local $a i32) (local $b i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $m i32.const 1 i32.sub @@ -21595,27 +21609,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=8 - local.get $13 + local.get $12 local.get $b - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=12 - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store offset=16 - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -21653,7 +21660,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -21661,13 +21668,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -21678,29 +21682,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $len i32.const 48 @@ -21711,7 +21715,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -21746,27 +21750,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=16 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -21791,27 +21788,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=20 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -21833,54 +21823,47 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|9 - i32.store offset=24 + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|10 - i32.store offset=28 - local.get $a|9 - local.set $37 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 - local.get $b|10 - local.set $37 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=32 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -21892,14 +21875,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/array/Array> global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -21963,11 +21946,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $endA local.get $endA @@ -21979,13 +21962,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -21994,11 +21977,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 @@ -22018,11 +22001,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/array/Array> local.set $endB local.get $endB @@ -22036,15 +22019,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -22053,11 +22036,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/array/Array> end i32.const 0 @@ -22068,14 +22051,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -22088,7 +22071,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -22098,26 +22081,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/array/Array> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -22145,27 +22128,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -22175,17 +22158,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/array/Array> end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -22194,7 +22177,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22334,9 +22317,8 @@ (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22344,16 +22326,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $i local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/array/Array<~lib/array/Array>#get:length local.set $len loop $for-loop|0 @@ -22362,55 +22344,48 @@ i32.lt_s if local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/array/Array>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i call $~lib/array/Array<~lib/array/Array>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -22421,12 +22396,12 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $std/array/assertSorted<~lib/array/Array> (param $arr i32) (param $comparator i32) @@ -22831,19 +22806,16 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill i32.const 0 i32.const 1 @@ -22904,27 +22876,20 @@ local.tee $max i32.store offset=12 local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $b - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=24 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -22959,27 +22924,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $max - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=28 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -23026,27 +22984,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $min - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=32 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -23085,38 +23036,37 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) - (local $5 i32) - (local $6 i32) (local $k i32) (local $tmp i32) - (local $9 i32) - (local $10 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $i local.get $right i32.eq if local.get $i - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return end local.get $i @@ -23127,11 +23077,11 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 1 @@ -23141,21 +23091,14 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -23172,32 +23115,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -23228,7 +23164,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=16 + i32.store offset=8 local.get $ptr local.get $i i32.const 2 @@ -23271,32 +23207,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $9 - i32.store offset=20 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -23314,12 +23243,12 @@ end end local.get $j - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return ) (func $~lib/util/sort/mergeRuns> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -23330,16 +23259,17 @@ (local $a i32) (local $b i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $m i32.const 1 i32.sub @@ -23434,27 +23364,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=8 - local.get $13 + local.get $12 local.get $b - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=12 - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store offset=16 - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -23492,7 +23415,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -23500,13 +23423,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -23517,29 +23437,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $len i32.const 48 @@ -23550,7 +23470,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -23585,27 +23505,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=16 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -23630,27 +23543,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=20 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -23672,54 +23578,47 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|9 - i32.store offset=24 + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|10 - i32.store offset=28 - local.get $a|9 - local.set $37 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 - local.get $b|10 - local.set $37 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=32 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -23731,14 +23630,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort> global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -23802,11 +23701,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight> local.set $endA local.get $endA @@ -23818,13 +23717,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -23833,11 +23732,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort> end i32.const 0 @@ -23857,11 +23756,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight> local.set $endB local.get $endB @@ -23875,15 +23774,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -23892,11 +23791,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort> end i32.const 0 @@ -23907,14 +23806,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -23927,7 +23826,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -23937,26 +23836,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -23984,27 +23883,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -24014,17 +23913,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns> end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -24033,7 +23932,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -24173,9 +24072,8 @@ (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -24183,16 +24081,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $i local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/array/Array>#get:length local.set $len loop $for-loop|0 @@ -24201,55 +24099,48 @@ i32.lt_s if local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i i32.const 1 i32.sub call $~lib/array/Array>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i call $~lib/array/Array>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -24260,12 +24151,12 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $std/array/assertSorted> (param $arr i32) (param $comparator i32) @@ -24327,19 +24218,16 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill i32.const 0 i32.const 1 @@ -24400,27 +24288,20 @@ local.tee $max i32.store offset=12 local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $b - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=24 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -24455,27 +24336,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $max - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=28 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -24522,27 +24396,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $min - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=32 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -24581,38 +24448,37 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/string/String|null> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) - (local $5 i32) - (local $6 i32) (local $k i32) (local $tmp i32) - (local $9 i32) - (local $10 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $i local.get $right i32.eq if local.get $i - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return end local.get $i @@ -24623,11 +24489,11 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 1 @@ -24637,21 +24503,14 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -24668,32 +24527,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -24724,7 +24576,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=16 + i32.store offset=8 local.get $ptr local.get $i i32.const 2 @@ -24767,32 +24619,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $9 - i32.store offset=20 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -24810,12 +24655,12 @@ end end local.get $j - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return ) (func $~lib/util/sort/mergeRuns<~lib/string/String|null> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -24826,16 +24671,17 @@ (local $a i32) (local $b i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $m i32.const 1 i32.sub @@ -24930,27 +24776,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=8 - local.get $13 + local.get $12 local.get $b - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=12 - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store offset=16 - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -24988,7 +24827,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -24996,13 +24835,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -25013,29 +24849,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $len i32.const 48 @@ -25046,7 +24882,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -25081,27 +24917,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=16 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -25126,27 +24955,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=20 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -25168,54 +24990,47 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|9 - i32.store offset=24 + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|10 - i32.store offset=28 - local.get $a|9 - local.set $37 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 - local.get $b|10 - local.set $37 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=32 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -25227,14 +25042,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String|null> global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -25298,11 +25113,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endA local.get $endA @@ -25314,13 +25129,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -25329,11 +25144,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 @@ -25353,11 +25168,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/string/String|null> local.set $endB local.get $endB @@ -25371,15 +25186,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -25388,11 +25203,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String|null> end i32.const 0 @@ -25403,14 +25218,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -25423,7 +25238,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -25433,26 +25248,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/string/String|null> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -25480,27 +25295,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -25510,17 +25325,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/string/String|null> end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -25529,7 +25344,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -25659,9 +25474,8 @@ (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -25669,16 +25483,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $i local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/array/Array<~lib/string/String|null>#get:length local.set $len loop $for-loop|0 @@ -25687,55 +25501,48 @@ i32.lt_s if local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i call $~lib/array/Array<~lib/string/String|null>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -25746,12 +25553,12 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $std/array/assertSorted<~lib/string/String|null> (param $arr i32) (param $comparator i32) @@ -26757,19 +26564,16 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - (local $15 i32) + (local $12 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill i32.const 0 i32.const 1 @@ -26830,27 +26634,20 @@ local.tee $max i32.store offset=12 local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $b - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=24 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -26885,27 +26682,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $max - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=28 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -26952,27 +26742,20 @@ local.tee $a i32.store local.get $a - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=16 - local.get $15 + local.get $12 local.get $min - local.set $15 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $12 i32.store offset=20 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=32 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -27011,38 +26794,37 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/extendRunRight<~lib/string/String> (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) (local $j i32) - (local $5 i32) - (local $6 i32) (local $k i32) (local $tmp i32) - (local $9 i32) - (local $10 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $i local.get $right i32.eq if local.get $i - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return end local.get $i @@ -27053,11 +26835,11 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 1 @@ -27067,21 +26849,14 @@ i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) i32.const 0 @@ -27098,32 +26873,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 31 @@ -27154,7 +26922,7 @@ i32.add i32.load local.tee $tmp - i32.store offset=16 + i32.store offset=8 local.get $ptr local.get $i i32.const 2 @@ -27197,32 +26965,25 @@ i32.shl i32.add i32.load offset=4 - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store - local.get $10 + local.get $7 local.get $ptr local.get $j i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $7 i32.store offset=4 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $9 - i32.store offset=20 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $0) i32.const 0 @@ -27240,12 +27001,12 @@ end end local.get $j - local.set $10 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $7 return ) (func $~lib/util/sort/mergeRuns<~lib/string/String> (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) @@ -27256,16 +27017,17 @@ (local $a i32) (local $b i32) (local $12 i32) - (local $13 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $m i32.const 1 i32.sub @@ -27360,27 +27122,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=8 - local.get $13 + local.get $12 local.get $b - local.set $13 + local.set $12 global.get $~lib/memory/__stack_pointer - local.get $13 + local.get $12 i32.store offset=12 - local.get $13 - global.get $~lib/memory/__stack_pointer + local.get $12 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store offset=16 - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -27418,7 +27173,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -27426,13 +27181,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -27443,29 +27195,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $len i32.const 48 @@ -27476,7 +27228,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -27511,27 +27263,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store offset=16 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -27556,27 +27301,20 @@ local.tee $b i32.store offset=4 local.get $a - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 local.get $b - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=20 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -27598,54 +27336,47 @@ global.get $~lib/memory/__stack_pointer local.get $ptr i32.load - local.tee $a|9 - i32.store offset=24 + local.tee $a|7 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $ptr i32.load offset=4 - local.tee $b|10 - i32.store offset=28 - local.get $a|9 - local.set $37 + local.tee $b|8 + i32.store offset=20 + local.get $a|7 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 - local.get $b|10 - local.set $37 + local.get $34 + local.get $b|8 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=12 - local.get $37 - global.get $~lib/memory/__stack_pointer + local.get $34 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=32 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -27657,14 +27388,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String> global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return @@ -27728,11 +27459,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $endA local.get $endA @@ -27744,13 +27475,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -27759,11 +27490,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 @@ -27783,11 +27514,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/extendRunRight<~lib/string/String> local.set $endB local.get $endB @@ -27801,15 +27532,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -27818,11 +27549,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/insertionSort<~lib/string/String> end i32.const 0 @@ -27833,14 +27564,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -27853,7 +27584,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -27863,26 +27594,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/string/String> local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -27910,27 +27641,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -27940,17 +27671,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 + local.get $34 i32.store offset=8 - local.get $37 + local.get $34 call $~lib/util/sort/mergeRuns<~lib/string/String> end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -27959,7 +27690,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -28099,9 +27830,8 @@ (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -28109,16 +27839,16 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $i local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/array/Array<~lib/string/String>#get:length local.set $len loop $for-loop|0 @@ -28127,55 +27857,48 @@ i32.lt_s if local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 local.get $data - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=12 - local.get $5 + local.get $4 + i32.store offset=8 + local.get $4 local.get $i call $~lib/array/Array<~lib/string/String>#__get - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) i32.const 0 i32.gt_s if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -28186,12 +27909,12 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $std/array/assertSorted<~lib/string/String> (param $arr i32) (param $comparator i32) @@ -33712,24 +33435,23 @@ (local $i i32) (local $6 i32) (local $7 i32) - (local $8 i32) (local $result i32) - (local $10 i32) + (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array<~lib/array/Array>#get:length_ local.set $len global.get $~lib/memory/__stack_pointer @@ -33741,11 +33463,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array<~lib/array/Array>#get:dataStart local.set $outStart i32.const 0 @@ -33755,11 +33477,11 @@ local.get $len local.tee $6 local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 call $~lib/array/Array<~lib/array/Array>#get:length_ local.tee $7 local.get $6 @@ -33770,43 +33492,36 @@ if global.get $~lib/memory/__stack_pointer local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 - i32.store offset=16 - local.get $10 + local.get $9 + i32.store offset=12 + local.get $9 call $~lib/array/Array<~lib/array/Array>#get:dataStart local.get $i i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store - local.get $10 + local.get $9 local.get $i local.get $this - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $3) local.tee $result - i32.store offset=20 + i32.store offset=16 local.get $outStart local.get $i i32.const 2 @@ -33828,12 +33543,12 @@ end end local.get $out - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $start:std/array @@ -46518,818 +46233,6 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp f32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - f32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - f32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp f64) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - f64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - f64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) (func $~lib/util/number/utoa32 (param $value i32) (param $radix i32) (result i32) (local $out i32) (local $decimals i32) diff --git a/tests/compiler/std/array.release.wat b/tests/compiler/std/array.release.wat index 1d9fef47ec..22943cdb01 100644 --- a/tests/compiler/std/array.release.wat +++ b/tests/compiler/std/array.release.wat @@ -758,7 +758,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$743 + block $__inlined_func$~lib/rt/itcms/Object#unlink$731 local.get $0 i32.load offset=4 i32.const -4 @@ -782,7 +782,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$743 + br $__inlined_func$~lib/rt/itcms/Object#unlink$731 end local.get $0 i32.load offset=8 @@ -2460,27 +2460,6 @@ (local $7 i32) (local $8 f32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2500,32 +2479,26 @@ local.get $3 select i32.add - local.set $3 + local.set $7 loop $for-loop|0 local.get $2 - local.get $3 + local.get $7 i32.ge_s if local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $3 f32.load offset=4 local.tee $8 local.set $6 - local.get $7 + local.get $3 f32.load local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop local.get $5 local.get $8 local.get $4 @@ -2539,52 +2512,47 @@ local.get $8 local.set $5 end - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $7 + local.set $3 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $9 local.get $8 f32.store offset=8 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add @@ -2592,173 +2560,281 @@ f32.store offset=8 loop $while-continue|2 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $5) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $9 local.get $5 f32.store offset=4 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add local.get $6 f32.store offset=4 - local.get $3 + local.get $7 i32.const 2 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) (local $6 i32) (local $7 f32) - (local $8 f32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - local.set $9 - local.get $2 + f32.load + local.get $0 + local.get $1 i32.const 1 i32.add - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - f32.load - f32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $9 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - f32.store + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 - i32.le_s - if local.get $4 - local.get $2 - i32.const 2 - i32.shl + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $5) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 f32) + (local $8 f32) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 i32.add f32.load - local.set $7 + f32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $9 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + f32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 + i32.le_s + if local.get $4 local.get $6 i32.const 2 i32.shl i32.add f32.load + local.set $7 + local.get $4 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -2774,10 +2850,10 @@ i32.add local.get $7 f32.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -2786,10 +2862,10 @@ i32.add local.get $8 f32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -2798,10 +2874,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -2838,27 +2910,6 @@ (local $6 i32) (local $7 f64) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2878,32 +2929,26 @@ local.get $3 select i32.add - local.set $3 + local.set $6 loop $for-loop|0 local.get $2 - local.get $3 + local.get $6 i32.ge_s if local.get $0 - local.get $3 + local.get $6 i32.const 3 i32.shl i32.add - local.tee $6 + local.tee $3 f64.load offset=8 local.tee $7 local.set $5 - local.get $6 + local.get $3 f64.load local.set $4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - i32.const 10548 - i32.load - drop local.get $4 local.get $7 i32.const 10544 @@ -2917,52 +2962,47 @@ local.get $7 local.set $4 end - local.get $3 + local.get $6 i32.const 1 i32.sub - local.set $6 + local.set $3 loop $while-continue|1 local.get $1 - local.get $6 + local.get $3 i32.le_s if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=4 - i32.const 10548 - i32.load - drop - local.get $7 - local.get $4 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $4 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $7 f64.store offset=16 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add @@ -2970,62 +3010,194 @@ f64.store offset=16 loop $while-continue|2 local.get $1 - local.get $6 + local.get $3 i32.le_s if - local.get $0 - local.get $6 - i32.const 3 - i32.shl - i32.add - local.tee $8 - f64.load - local.set $4 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=8 - i32.const 10548 - i32.load - drop - local.get $4 - local.get $5 - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $8 + f64.load + local.set $4 + i32.const 2 + global.set $~argumentsLength + local.get $4 + local.get $5 + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $8 local.get $4 f64.store offset=8 - local.get $6 + local.get $3 i32.const 1 i32.sub - local.set $6 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $6 + local.get $3 i32.const 3 i32.shl i32.add local.get $5 f64.store offset=8 - local.get $3 + local.get $6 i32.const 2 i32.add - local.set $3 + local.set $6 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 f64) + (local $5 f64) + (local $6 i32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + local.set $4 + local.get $6 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $6 + local.get $4 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + i32.const 10544 + i32.load + call_indirect (type $6) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end + local.get $3 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (local $5 i32) @@ -3033,44 +3205,26 @@ (local $7 f64) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $5 + local.get $3 i32.add local.set $8 - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $5 + local.set $2 loop $for-loop|0 local.get $1 - local.get $5 + local.get $2 i32.lt_s if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.tee $5 + local.tee $2 i32.const 3 i32.shl local.tee $9 @@ -3085,28 +3239,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $5 + i32.gt_s if local.get $4 local.get $8 - local.get $2 + local.get $5 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $2 + local.get $5 i32.const 3 i32.shl i32.add f64.load offset=8 f64.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|1 end end @@ -3116,14 +3270,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $5 i32.const 3 i32.shl i32.add f64.load local.set $6 local.get $4 - local.get $5 + local.get $2 i32.const 3 i32.shl i32.add @@ -3131,12 +3285,6 @@ local.set $7 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - i32.const 10548 - i32.load - drop local.get $6 local.get $7 i32.const 10544 @@ -3152,10 +3300,10 @@ i32.add local.get $6 f64.store - local.get $2 + local.get $5 i32.const 1 i32.sub - local.set $2 + local.set $5 else local.get $0 local.get $1 @@ -3164,10 +3312,10 @@ i32.add local.get $7 f64.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 end local.get $1 i32.const 1 @@ -3176,10 +3324,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -3216,27 +3360,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -3267,23 +3390,17 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $3 i32.load offset=4 - local.set $3 - local.get $5 - i32.load local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -3304,30 +3421,25 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store offset=8 @@ -3344,38 +3456,33 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -3391,7 +3498,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=4 local.get $7 i32.const 2 @@ -3400,89 +3507,207 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/extendRunRight (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - local.set $7 - local.get $2 + i32.load + local.get $0 + local.get $1 i32.const 1 i32.add - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $8 - local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $7 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 local.get $2 - i32.const 1 - i32.add - local.set $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 br $for-loop|1 end end @@ -3492,14 +3717,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add @@ -3507,12 +3732,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -3528,10 +3747,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -3540,10 +3759,10 @@ i32.add local.get $8 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -3552,10 +3771,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3568,27 +3783,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -3619,23 +3813,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $3 i32.load offset=4 - local.set $3 - local.get $4 - i32.load local.tee $5 local.set $4 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - i32.const 10852 - i32.load - drop - local.get $5 local.get $3 + local.get $5 i32.const 10848 i32.load call_indirect (type $0) @@ -3656,78 +3844,68 @@ local.get $5 i32.le_s if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=4 - i32.const 10852 - i32.load - drop - local.get $7 - local.get $4 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $8 - local.get $7 - i32.store offset=8 + block $while-break|1 + local.get $0 local.get $5 - i32.const 1 - i32.sub - local.set $5 - br $while-continue|1 - end - end - end - local.get $0 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $7 + i32.store offset=8 + local.get $5 + i32.const 1 + i32.sub + local.set $5 + br $while-continue|1 + end + end + end + local.get $0 local.get $5 i32.const 2 i32.shl i32.add - local.get $4 + local.get $3 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $5 i32.le_s if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=8 - i32.const 10852 - i32.load - drop - local.get $7 - local.get $3 - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 local.get $4 + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $7 i32.store offset=4 local.get $5 @@ -3743,7 +3921,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=4 local.get $6 i32.const 2 @@ -3752,53 +3930,171 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/extendRunRight (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) i32.const 0 - i32.store + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 10848 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end local.get $3 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $5 + local.get $3 i32.add local.set $6 - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $5 + local.set $2 loop $for-loop|0 local.get $1 - local.get $5 + local.get $2 i32.lt_s if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.tee $5 + local.tee $2 i32.const 2 i32.shl local.tee $7 @@ -3813,28 +4109,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $5 + i32.gt_s if local.get $4 local.get $6 - local.get $2 + local.get $5 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|1 end end @@ -3844,14 +4140,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add i32.load local.set $6 local.get $4 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add @@ -3859,12 +4155,6 @@ local.set $7 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - i32.const 10852 - i32.load - drop local.get $6 local.get $7 i32.const 10848 @@ -3880,10 +4170,10 @@ i32.add local.get $6 i32.store - local.get $2 + local.get $5 i32.const 1 i32.sub - local.set $2 + local.set $5 else local.get $0 local.get $1 @@ -3892,10 +4182,10 @@ i32.add local.get $7 i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 end local.get $1 i32.const 1 @@ -3904,10 +4194,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6610,7 +6896,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$147 + block $__inlined_func$~lib/util/bytes/FILL$139 local.get $1 i32.eqz local.get $1 @@ -6635,7 +6921,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$147 + br $__inlined_func$~lib/util/bytes/FILL$139 end loop $for-loop|0 local.get $0 @@ -6905,7 +7191,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$156 + block $__inlined_func$~lib/util/bytes/FILL$148 local.get $1 i32.reinterpret_f32 i32.eqz @@ -6927,7 +7213,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$156 + br $__inlined_func$~lib/util/bytes/FILL$148 end loop $for-loop|0 local.get $0 @@ -7307,7 +7593,7 @@ select local.set $1 end - block $__inlined_func$~lib/rt/itcms/__renew$665 + block $__inlined_func$~lib/rt/itcms/__renew$653 local.get $3 i32.const 20 i32.sub @@ -7325,7 +7611,7 @@ i32.store offset=16 local.get $3 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$665 + br $__inlined_func$~lib/rt/itcms/__renew$653 end local.get $1 local.get $4 @@ -9347,7 +9633,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9365,9 +9651,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9390,7 +9673,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $2 @@ -9403,12 +9686,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -9416,7 +9693,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -9430,7 +9707,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -9505,7 +9782,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9523,9 +9800,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9540,7 +9814,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $2 @@ -9553,12 +9827,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -9566,7 +9834,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -9580,7 +9848,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -9590,7 +9858,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9608,9 +9876,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9633,7 +9898,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $2 @@ -9646,12 +9911,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -9660,7 +9919,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -9674,7 +9933,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -9750,7 +10009,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9768,9 +10027,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9793,7 +10049,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $2 @@ -9806,12 +10062,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -9819,7 +10069,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -9833,7 +10083,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -9909,7 +10159,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -9927,9 +10177,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -9952,7 +10199,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $2 @@ -9965,12 +10212,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -9984,7 +10225,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10224,7 +10465,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10242,8 +10483,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -10280,7 +10521,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=12 + i32.store offset=8 local.get $2 i32.const 2 i32.shl @@ -10295,12 +10536,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - drop local.get $4 local.get $5 i32.add @@ -10319,7 +10554,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10364,7 +10599,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10383,9 +10618,6 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.const 2 i32.const 4 i32.const 0 @@ -10429,12 +10661,6 @@ i32.store offset=4 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - drop local.get $5 local.get $2 local.get $0 @@ -10457,7 +10683,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -10541,7 +10767,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10559,9 +10785,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10584,7 +10807,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $3 @@ -10598,12 +10821,6 @@ i32.store i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $5 local.get $3 @@ -10620,7 +10837,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -10695,7 +10912,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10713,9 +10930,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $0 i32.store local.get $0 @@ -10730,7 +10944,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.store offset=8 + i32.store offset=4 local.get $0 i32.load offset=4 local.get $3 @@ -10744,12 +10958,6 @@ i32.store i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $4 local.get $3 @@ -10766,7 +10974,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -10867,7 +11075,7 @@ (local $17 f32) (local $18 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10882,11 +11090,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -10916,12 +11121,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -10940,12 +11139,6 @@ local.set $18 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $18 local.get $9 @@ -10978,12 +11171,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -11007,7 +11194,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -11077,7 +11264,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -11095,7 +11282,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -11120,7 +11307,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -11140,7 +11327,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $10 @@ -11209,7 +11396,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -11275,7 +11462,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -11296,13 +11483,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -11405,7 +11592,7 @@ (local $16 f64) (local $17 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11420,11 +11607,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -11454,12 +11638,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - i32.const 10548 - i32.load - drop local.get $0 local.get $17 local.get $16 @@ -11478,12 +11656,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=4 - i32.const 10548 - i32.load - drop local.get $16 local.get $17 local.get $1 @@ -11517,12 +11689,6 @@ local.set $16 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=8 - i32.const 10548 - i32.load - drop local.get $0 local.get $16 local.get $8 @@ -11546,7 +11712,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -11615,7 +11781,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -11632,7 +11798,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -11656,7 +11822,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 local.get $3 i32.const 1 @@ -11675,7 +11841,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 local.get $5 local.get $9 @@ -11743,7 +11909,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 local.get $7 local.get $2 @@ -11808,7 +11974,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10544 - i32.store offset=12 + i32.store local.get $0 local.get $3 local.get $2 @@ -11828,13 +11994,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -11903,7 +12069,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -11918,11 +12084,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -11952,12 +12115,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -11976,12 +12133,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -12014,12 +12165,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -12043,7 +12188,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -12113,7 +12258,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -12131,7 +12276,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -12156,7 +12301,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -12176,7 +12321,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -12245,7 +12390,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -12311,7 +12456,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -12332,13 +12477,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -12399,7 +12544,7 @@ (local $13 i32) (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12414,11 +12559,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -12448,12 +12590,6 @@ local.set $2 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - i32.const 10852 - i32.load - drop local.get $0 local.get $2 local.get $1 @@ -12472,12 +12608,6 @@ local.set $4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=4 - i32.const 10852 - i32.load - drop local.get $1 local.get $2 local.get $3 @@ -12511,12 +12641,6 @@ local.set $2 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=8 - i32.const 10852 - i32.load - drop local.get $0 local.get $2 local.get $1 @@ -12540,7 +12664,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -12609,7 +12733,7 @@ local.set $11 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -12626,7 +12750,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -12650,7 +12774,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -12669,7 +12793,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 local.get $5 local.get $8 @@ -12737,7 +12861,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 local.get $7 local.get $2 @@ -12802,7 +12926,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 10848 - i32.store offset=12 + i32.store local.get $0 local.get $3 local.get $2 @@ -12822,13 +12946,13 @@ local.get $9 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -12962,7 +13086,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted$670 (result i32) + block $__inlined_func$std/array/isSorted$658 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -12980,7 +13104,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12988,8 +13112,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 1 local.set $0 global.get $~lib/memory/__stack_pointer @@ -13019,12 +13143,6 @@ call $~lib/array/Array#__get i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $1 i32.load call_indirect (type $0) @@ -13032,11 +13150,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted$670 + br $__inlined_func$std/array/isSorted$658 end local.get $0 i32.const 1 @@ -13046,7 +13164,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -13148,7 +13266,7 @@ (local $8 i32) (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13164,7 +13282,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill local.get $1 local.get $3 @@ -13222,12 +13340,6 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=24 - local.get $4 - i32.load offset=4 - drop local.get $3 local.get $5 local.get $4 @@ -13273,12 +13385,6 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=28 - local.get $4 - i32.load offset=4 - drop local.get $7 local.get $3 local.get $4 @@ -13329,12 +13435,6 @@ i32.store offset=20 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=32 - local.get $4 - i32.load offset=4 - drop local.get $3 local.get $6 local.get $4 @@ -13369,7 +13469,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -13378,7 +13478,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13393,15 +13493,17 @@ unreachable end global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 - memory.fill + i32.store offset=8 local.get $1 local.get $2 i32.eq if global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -13430,12 +13532,6 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop local.get $5 local.get $6 local.get $3 @@ -13466,12 +13562,6 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=12 - local.get $3 - i32.load offset=4 - drop local.get $6 local.get $5 local.get $3 @@ -13506,7 +13596,7 @@ local.tee $3 i32.load local.tee $5 - i32.store offset=16 + i32.store offset=8 local.get $3 local.get $0 local.get $2 @@ -13553,12 +13643,6 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - local.get $3 - i32.load offset=4 - drop local.get $5 local.get $1 local.get $3 @@ -13579,7 +13663,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -13589,7 +13673,7 @@ (local $7 i32) (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13604,9 +13688,11 @@ unreachable end global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 local.get $3 local.get $2 i32.const 1 @@ -13697,12 +13783,6 @@ i32.store offset=12 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=16 - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -13743,7 +13823,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer ) @@ -13755,14 +13835,14 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i32) + (local $10 i64) (local $11 i32) (local $12 i32) - (local $13 i64) + (local $13 i32) (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13778,7 +13858,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 36 + i32.const 24 memory.fill block $folding-inner0 local.get $1 @@ -13804,7 +13884,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $1 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -13812,38 +13892,32 @@ local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store global.get $~lib/memory/__stack_pointer - local.get $1 - local.get $3 local.get $4 + local.get $3 + local.get $1 select - local.tee $1 + local.tee $4 i32.store global.get $~lib/memory/__stack_pointer local.get $0 @@ -13851,80 +13925,68 @@ local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=20 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $4 + local.tee $1 select i32.store offset=4 local.get $0 - local.get $1 - local.get $3 local.get $4 + local.get $3 + local.get $1 select i32.store offset=8 end global.get $~lib/memory/__stack_pointer local.get $0 i32.load - local.tee $1 - i32.store offset=24 + local.tee $4 + i32.store offset=16 global.get $~lib/memory/__stack_pointer local.get $0 i32.load offset=4 local.tee $3 - i32.store offset=28 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=32 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 - local.get $1 - local.get $1 + local.get $4 + local.get $4 local.get $3 local.get $2 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.tee $2 + local.tee $1 select i32.store local.get $0 - local.get $1 + local.get $4 local.get $3 - local.get $2 + local.get $1 select i32.store offset=4 br $folding-inner0 @@ -13946,43 +14008,43 @@ local.get $1 i32.clz i32.sub - local.tee $4 + local.tee $5 i32.const 2 i32.shl - local.tee $5 + local.tee $4 i32.const 1 i32.shl - local.set $6 + local.set $3 global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end - local.get $5 + local.get $4 global.get $~lib/rt/tlsf/ROOT - local.get $6 + local.get $3 call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.tee $10 + local.tee $13 i32.add - local.set $11 + local.set $12 loop $for-loop|1 - local.get $3 - local.get $4 - i32.lt_u + local.get $5 + local.get $7 + i32.gt_u if - local.get $10 - local.get $3 + local.get $13 + local.get $7 i32.const 2 i32.shl i32.add i32.const -1 i32.store - local.get $3 + local.get $7 i32.const 1 i32.add - local.set $3 + local.set $7 br $for-loop|1 end end @@ -13998,7 +14060,7 @@ call $~lib/rt/tlsf/allocateBlock i32.const 4 i32.add - local.set $12 + local.set $11 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 @@ -14007,10 +14069,10 @@ local.get $1 i32.const 1 i32.sub - local.tee $9 + local.tee $14 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $4 + local.tee $5 i32.const 1 i32.add local.tee $1 @@ -14023,42 +14085,42 @@ local.get $0 i32.const 0 i32.const 31 - local.get $9 - local.get $9 + local.get $14 + local.get $14 i32.const 31 i32.ge_s select - local.tee $4 + local.tee $5 local.get $1 local.get $2 call $~lib/util/sort/insertionSort end i32.const 0 - local.set $1 + local.set $7 i32.const 0 - local.set $3 + local.set $1 loop $while-continue|2 - local.get $4 - local.get $9 + local.get $5 + local.get $14 i32.lt_s if global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 - local.get $4 + local.get $5 i32.const 1 i32.add - local.tee $6 - local.get $9 + local.tee $4 + local.get $14 local.get $2 call $~lib/util/sort/extendRunRight - local.tee $5 - local.get $6 + local.tee $6 + local.get $4 i32.sub i32.const 1 i32.add - local.tee $7 + local.tee $8 i32.const 32 i32.lt_s if @@ -14066,34 +14128,34 @@ local.get $2 i32.store offset=8 local.get $0 - local.get $6 - local.get $9 - local.get $6 + local.get $4 + local.get $14 + local.get $4 i32.const 31 i32.add - local.tee $5 - local.get $5 - local.get $9 + local.tee $3 + local.get $3 + local.get $14 i32.gt_s select - local.tee $5 - local.get $7 + local.tee $6 + local.get $8 local.get $2 call $~lib/util/sort/insertionSort end - local.get $3 - local.get $6 + local.get $1 + local.get $4 i32.add i64.extend_i32_u i64.const 30 i64.shl - local.get $9 + local.get $14 i32.const 1 i32.add i64.extend_i32_u - local.tee $13 + local.tee $10 i64.div_u - local.get $5 + local.get $4 local.get $6 i32.add i32.const 1 @@ -14101,132 +14163,132 @@ i64.extend_i32_u i64.const 30 i64.shl - local.get $13 + local.get $10 i64.div_u i64.xor i32.wrap_i64 i32.clz - local.set $7 + local.set $3 loop $for-loop|3 - local.get $1 + local.get $3 local.get $7 - i32.gt_u + i32.lt_u if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.tee $14 - local.get $10 + local.tee $9 + local.get $13 i32.add - local.tee $15 - i32.load local.tee $8 + i32.load + local.tee $15 i32.const -1 i32.ne if - local.get $11 - local.get $14 + local.get $9 + local.get $12 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 - local.get $8 - local.get $3 - local.get $4 - local.get $12 + local.get $15 + local.get $1 + local.get $5 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns - local.get $15 + local.get $8 i32.const -1 i32.store - local.get $8 - local.set $3 + local.get $15 + local.set $1 end - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $for-loop|3 end end - local.get $7 + local.get $3 i32.const 2 i32.shl - local.tee $1 - local.get $10 + local.tee $7 + local.get $13 i32.add - local.get $3 - i32.store local.get $1 - local.get $11 - i32.add - local.get $4 i32.store - local.get $6 - local.set $3 - local.get $5 - local.set $4 local.get $7 + local.get $12 + i32.add + local.get $5 + i32.store + local.get $4 local.set $1 + local.get $6 + local.set $5 + local.get $3 + local.set $7 br $while-continue|2 end end loop $for-loop|4 - local.get $1 + local.get $7 if - local.get $1 + local.get $7 i32.const 2 i32.shl - local.tee $3 - local.get $10 + local.tee $1 + local.get $13 i32.add i32.load - local.tee $4 + local.tee $3 i32.const -1 i32.ne if - local.get $3 - local.get $11 + local.get $1 + local.get $12 i32.add i32.load i32.const 1 i32.add - local.set $3 + local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 i32.store offset=8 local.get $0 - local.get $4 local.get $3 - local.get $9 - local.get $12 + local.get $1 + local.get $14 + local.get $11 local.get $2 call $~lib/util/sort/mergeRuns end - local.get $1 + local.get $7 i32.const 1 i32.sub - local.set $1 + local.set $7 br $for-loop|4 end end - local.get $12 + local.get $11 call $~lib/rt/tlsf/__free - local.get $10 + local.get $13 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 36 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer ) @@ -14329,7 +14391,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/array/Array>$672 (result i32) + block $__inlined_func$std/array/isSorted<~lib/array/Array>$660 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -14347,7 +14409,7 @@ local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14360,8 +14422,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $1 global.get $~lib/memory/__stack_pointer @@ -14377,7 +14439,7 @@ if global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=12 + i32.store offset=8 local.get $5 local.get $1 i32.const 1 @@ -14389,7 +14451,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $5 - i32.store offset=12 + i32.store offset=8 local.get $5 local.get $1 call $~lib/array/Array#__get @@ -14399,12 +14461,6 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=8 - local.get $0 - i32.load offset=4 - drop local.get $2 local.get $3 local.get $0 @@ -14414,11 +14470,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/array/Array>$672 + br $__inlined_func$std/array/isSorted<~lib/array/Array>$660 end local.get $1 i32.const 1 @@ -14428,7 +14484,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -14845,7 +14901,7 @@ global.get $~lib/memory/__stack_pointer local.get $1 i32.store - block $__inlined_func$~lib/string/String#concat$748 + block $__inlined_func$~lib/string/String#concat$736 local.get $1 i32.const 20 i32.sub @@ -14864,7 +14920,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/string/String#concat$748 + br $__inlined_func$~lib/string/String#concat$736 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -15053,7 +15109,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$750 + block $__inlined_func$~lib/util/string/joinIntegerArray$738 local.get $0 i32.const 1 i32.sub @@ -15067,7 +15123,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$750 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end local.get $7 i32.eqz @@ -15080,7 +15136,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$750 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15179,7 +15235,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$750 + br $__inlined_func$~lib/util/string/joinIntegerArray$738 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -15245,7 +15301,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$751 + block $__inlined_func$~lib/util/string/joinIntegerArray$739 local.get $0 i32.const 1 i32.sub @@ -15259,7 +15315,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$751 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 end local.get $7 i32.eqz @@ -15272,7 +15328,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$751 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 end global.get $~lib/memory/__stack_pointer local.get $1 @@ -15371,7 +15427,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$751 + br $__inlined_func$~lib/util/string/joinIntegerArray$739 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16150,7 +16206,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$752 + block $__inlined_func$~lib/util/string/joinIntegerArray$740 local.get $0 i32.const 1 i32.sub @@ -16164,7 +16220,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$752 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 end local.get $6 i32.eqz @@ -16177,7 +16233,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$752 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -16270,7 +16326,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$752 + br $__inlined_func$~lib/util/string/joinIntegerArray$740 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -16346,7 +16402,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$493 + block $__inlined_func$~lib/util/number/utoa64$485 local.get $3 i64.eqz if @@ -16356,7 +16412,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7712 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$493 + br $__inlined_func$~lib/util/number/utoa64$485 end local.get $3 i64.const 4294967295 @@ -16695,7 +16751,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$755 + block $__inlined_func$~lib/util/string/joinIntegerArray$743 local.get $0 i32.const 1 i32.sub @@ -16709,7 +16765,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$755 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end local.get $6 i32.eqz @@ -16722,7 +16778,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$755 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -16815,7 +16871,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$755 + br $__inlined_func$~lib/util/string/joinIntegerArray$743 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -21054,7 +21110,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$726 + block $__inlined_func$~lib/array/Array#indexOf$714 local.get $2 i32.load offset=12 local.tee $4 @@ -21070,7 +21126,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$726 + br $__inlined_func$~lib/array/Array#indexOf$714 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21096,7 +21152,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$726 + br $__inlined_func$~lib/array/Array#indexOf$714 end local.get $0 i32.const 1 @@ -21148,7 +21204,7 @@ global.get $~lib/memory/__stack_pointer local.get $2 i32.store - block $__inlined_func$~lib/array/Array#indexOf$727 + block $__inlined_func$~lib/array/Array#indexOf$715 local.get $2 i32.load offset=12 local.tee $4 @@ -21164,7 +21220,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $0 - br $__inlined_func$~lib/array/Array#indexOf$727 + br $__inlined_func$~lib/array/Array#indexOf$715 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21190,7 +21246,7 @@ i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/array/Array#indexOf$727 + br $__inlined_func$~lib/array/Array#indexOf$715 end local.get $0 i32.const 1 @@ -21501,7 +21557,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$728 (result i32) + block $__inlined_func$~lib/array/Array#includes$716 (result i32) i32.const 1 i32.const 2 i32.const 9 @@ -21541,7 +21597,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$728 + br $__inlined_func$~lib/array/Array#includes$716 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21569,7 +21625,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$728 + br $__inlined_func$~lib/array/Array#includes$716 end local.get $0 i32.const 1 @@ -21593,7 +21649,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/array/Array#includes$729 (result i32) + block $__inlined_func$~lib/array/Array#includes$717 (result i32) i32.const 1 i32.const 3 i32.const 12 @@ -21633,7 +21689,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/array/Array#includes$729 + br $__inlined_func$~lib/array/Array#includes$717 end global.get $~lib/memory/__stack_pointer local.get $2 @@ -21661,7 +21717,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/array/Array#includes$729 + br $__inlined_func$~lib/array/Array#includes$717 end local.get $0 i32.const 1 @@ -24071,7 +24127,7 @@ i32.const 9296 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24079,9 +24135,11 @@ i32.lt_s br_if $folding-inner2 global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -24120,7 +24178,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store offset=8 local.get $4 i32.const 2 i32.shl @@ -24136,12 +24194,6 @@ i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 9296 - i32.store offset=8 - i32.const 9300 - i32.load - drop - global.get $~lib/memory/__stack_pointer local.get $12 local.get $4 local.get $2 @@ -24149,7 +24201,7 @@ i32.load call_indirect (type $1) local.tee $12 - i32.store offset=16 + i32.store offset=12 local.get $10 local.get $11 i32.add @@ -24167,7 +24219,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 20 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer local.get $9 @@ -24181,7 +24233,7 @@ i32.const 9328 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -24192,8 +24244,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -24232,7 +24284,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store offset=8 local.get $4 i32.const 2 i32.shl @@ -24247,12 +24299,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 9328 - i32.store offset=8 - i32.const 9332 - i32.load - drop local.get $10 local.get $11 i32.add @@ -24271,7 +24317,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $9 @@ -27025,7 +27071,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - block $__inlined_func$std/array/isSorted<~lib/string/String|null>$674 (result i32) + block $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 @@ -27043,7 +27089,7 @@ i32.const 11696 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -27054,8 +27100,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 i32.const 1 local.set $1 global.get $~lib/memory/__stack_pointer @@ -27071,7 +27117,7 @@ if global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=12 + i32.store offset=8 local.get $4 local.get $1 i32.const 1 @@ -27083,7 +27129,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=12 + i32.store offset=8 local.get $4 local.get $1 call $~lib/array/Array#__get @@ -27093,12 +27139,6 @@ i32.store offset=4 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 11696 - i32.store offset=8 - i32.const 11700 - i32.load - drop local.get $9 local.get $10 i32.const 11696 @@ -27108,11 +27148,11 @@ i32.gt_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isSorted<~lib/string/String|null>$674 + br $__inlined_func$std/array/isSorted<~lib/string/String|null>$662 end local.get $1 i32.const 1 @@ -27122,7 +27162,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -27144,7 +27184,7 @@ i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 (result i32) + block $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 (result i32) global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -27184,7 +27224,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end local.get $0 local.get $2 @@ -27195,7 +27235,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end i32.const 0 local.set $1 @@ -27255,7 +27295,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$760 + br $__inlined_func$std/array/isArraysEqual<~lib/string/String|null>$748 end local.get $1 i32.const 1 @@ -27455,7 +27495,7 @@ global.get $~lib/memory/__stack_pointer i32.const 10032 i32.store - block $__inlined_func$~lib/string/String#charAt$749 + block $__inlined_func$~lib/string/String#charAt$737 local.get $12 i32.const 10028 i32.load @@ -27469,7 +27509,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/string/String#charAt$749 + br $__inlined_func$~lib/string/String#charAt$737 end global.get $~lib/memory/__stack_pointer i32.const 2 @@ -28273,7 +28313,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$753 + block $__inlined_func$~lib/util/string/joinIntegerArray$741 local.get $1 i32.const 1 i32.sub @@ -28287,7 +28327,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$753 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end local.get $1 i32.eqz @@ -28300,7 +28340,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$753 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -28397,7 +28437,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$753 + br $__inlined_func$~lib/util/string/joinIntegerArray$741 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -28491,7 +28531,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$754 + block $__inlined_func$~lib/util/string/joinIntegerArray$742 local.get $1 i32.const 1 i32.sub @@ -28505,7 +28545,7 @@ global.set $~lib/memory/__stack_pointer i32.const 11568 local.set $2 - br $__inlined_func$~lib/util/string/joinIntegerArray$754 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end local.get $1 i32.eqz @@ -28518,7 +28558,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$754 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end global.get $~lib/memory/__stack_pointer i32.const 11856 @@ -28615,7 +28655,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$754 + br $__inlined_func$~lib/util/string/joinIntegerArray$742 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -30418,7 +30458,7 @@ i32.const 15984 i32.store offset=48 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -30427,7 +30467,7 @@ br_if $folding-inner2 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $1 @@ -30467,7 +30507,7 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.store offset=16 + i32.store offset=12 global.get $~lib/memory/__stack_pointer local.get $4 i32.const 2 @@ -30485,12 +30525,6 @@ i32.const 3 global.set $~argumentsLength global.get $~lib/memory/__stack_pointer - i32.const 15984 - i32.store offset=12 - i32.const 15988 - i32.load - drop - global.get $~lib/memory/__stack_pointer local.get $10 local.get $4 local.get $1 @@ -30498,7 +30532,7 @@ i32.load call_indirect (type $1) local.tee $10 - i32.store offset=20 + i32.store offset=16 local.get $8 local.get $9 i32.add @@ -30516,7 +30550,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -30839,756 +30873,6 @@ global.set $~lib/memory/__stack_pointer local.get $3 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $5) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $5) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 f64) - (local $5 f64) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store - i32.const 10548 - i32.load - drop - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=4 - i32.const 10548 - i32.load - drop - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - local.set $4 - local.get $6 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $6 - local.get $4 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10544 - i32.store offset=8 - i32.const 10548 - i32.load - drop - i32.const 10544 - i32.load - call_indirect (type $6) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16192 - i32.lt_s - if - i32.const 48992 - i32.const 49040 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store - i32.const 10852 - i32.load - drop - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=4 - i32.const 10852 - i32.load - drop - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 10848 - i32.store offset=8 - i32.const 10852 - i32.load - drop - i32.const 10848 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) (func $~lib/util/number/utoa32 (param $0 i32) (result i32) (local $1 i32) (local $2 i32) diff --git a/tests/compiler/std/staticarray.debug.wat b/tests/compiler/std/staticarray.debug.wat index cc30955558..eecfcbe17e 100644 --- a/tests/compiler/std/staticarray.debug.wat +++ b/tests/compiler/std/staticarray.debug.wat @@ -39,7 +39,6 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/staticarray/maxVal (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/rt/__rtti_base i32 (i32.const 2864)) (global $~lib/memory/__data_end i32 (i32.const 2936)) @@ -2944,21 +2943,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -3011,16 +2996,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $2) i32.const 0 @@ -3050,16 +3028,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $2) i32.const 0 @@ -3105,16 +3076,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $2) i32.const 0 @@ -3152,10 +3116,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $2) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -3215,15 +3330,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -3315,16 +3421,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $2) i32.const 0 @@ -3361,10 +3460,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -6025,26 +6120,22 @@ (local $out i32) (local $outStart i32) (local $i i32) - (local $6 i32) (local $result i32) - (local $8 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $this - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/staticarray/StaticArray#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -6056,11 +6147,11 @@ local.tee $out i32.store offset=4 local.get $out - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 + local.get $7 call $~lib/array/Array#get:dataStart local.set $outStart i32.const 0 @@ -6078,21 +6169,14 @@ i32.load local.get $i local.get $this - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=8 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $3) local.set $result @@ -6113,35 +6197,34 @@ end end local.get $out - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $~lib/staticarray/StaticArray#forEach (param $this i32) (param $fn i32) (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6157,21 +6240,14 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $5) local.get $i @@ -6182,7 +6258,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -6372,9 +6448,8 @@ (local $len i32) (local $value i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -6383,9 +6458,6 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.const 2 i32.const 7 i32.const 0 @@ -6395,11 +6467,11 @@ i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=4 - local.get $7 + local.get $6 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6417,30 +6489,23 @@ local.get $value local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=4 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=8 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $3) if local.get $result - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=4 - local.get $7 + local.get $6 local.get $value call $~lib/array/Array#push drop @@ -6453,12 +6518,12 @@ end end local.get $result - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $~lib/staticarray/StaticArray#reduce (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) @@ -6466,25 +6531,24 @@ (local $i i32) (local $len i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store local.get $initialValue local.set $acc i32.const 0 local.set $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 + local.get $6 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6501,21 +6565,14 @@ i32.load local.get $i local.get $this - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $4) local.set $acc @@ -6527,35 +6584,34 @@ end end local.get $acc - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $~lib/staticarray/StaticArray#reduceRight (param $this i32) (param $fn i32) (param $initialValue i32) (result i32) (local $acc i32) (local $i i32) (local $5 i32) - (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store local.get $initialValue local.set $acc local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 + local.get $5 call $~lib/staticarray/StaticArray#get:length i32.const 1 i32.sub @@ -6574,21 +6630,14 @@ i32.load local.get $i local.get $this - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store - local.get $6 - global.get $~lib/memory/__stack_pointer + local.get $5 i32.const 4 global.set $~argumentsLength local.get $fn - local.tee $5 - i32.store offset=4 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $4) local.set $acc @@ -6600,35 +6649,34 @@ end end local.get $acc - local.set $6 + local.set $5 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $6 + local.get $5 return ) (func $~lib/staticarray/StaticArray#some (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6644,31 +6692,24 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $3) if i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -6679,35 +6720,34 @@ end end i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $~lib/staticarray/StaticArray#every (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6723,32 +6763,25 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $3) i32.eqz if i32.const 0 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -6759,35 +6792,34 @@ end end i32.const 1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $~lib/staticarray/StaticArray#findIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $len i32) (local $4 i32) - (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 + local.get $4 call $~lib/staticarray/StaticArray#get:length local.set $len loop $for-loop|0 @@ -6803,31 +6835,24 @@ i32.load local.get $i local.get $this - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store - local.get $5 - global.get $~lib/memory/__stack_pointer + local.get $4 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $3) if local.get $i - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return end local.get $i @@ -6838,32 +6863,31 @@ end end i32.const -1 - local.set $5 + local.set $4 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $5 + local.get $4 return ) (func $~lib/staticarray/StaticArray#findLastIndex (param $this i32) (param $fn i32) (result i32) (local $i i32) (local $3 i32) - (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 + local.get $3 call $~lib/staticarray/StaticArray#get:length i32.const 1 i32.sub @@ -6881,31 +6905,24 @@ i32.load local.get $i local.get $this - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store - local.get $4 - global.get $~lib/memory/__stack_pointer + local.get $3 i32.const 3 global.set $~argumentsLength local.get $fn - local.tee $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $3) if local.get $i - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return end local.get $i @@ -6916,25 +6933,22 @@ end end i32.const -1 - local.set $4 + local.set $3 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 return ) (func $~lib/util/sort/SORT (param $ptr i32) (param $len i32) (param $comparator i32) (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -6945,32 +6959,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -6980,7 +6991,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -7012,16 +7023,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $2) i32.const 0 @@ -7043,16 +7047,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $2) i32.const 0 @@ -7073,41 +7070,34 @@ end local.get $ptr i32.load - local.set $a|9 + local.set $a|7 local.get $ptr i32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $2) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -7119,14 +7109,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -7190,11 +7180,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -7206,13 +7196,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -7221,11 +7211,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -7245,11 +7235,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -7263,15 +7253,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -7280,11 +7270,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -7295,14 +7285,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -7315,7 +7305,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -7325,26 +7315,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -7372,27 +7362,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -7402,17 +7392,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -7421,7 +7411,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -10348,207 +10338,4 @@ local.get $7 return ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $2) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $2) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $2) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) ) diff --git a/tests/compiler/std/staticarray.release.wat b/tests/compiler/std/staticarray.release.wat index 47b2d389cf..5db8f652ff 100644 --- a/tests/compiler/std/staticarray.release.wat +++ b/tests/compiler/std/staticarray.release.wat @@ -260,7 +260,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$270 + block $__inlined_func$~lib/rt/itcms/Object#unlink$267 local.get $0 i32.load offset=4 i32.const -4 @@ -284,7 +284,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$270 + br $__inlined_func$~lib/rt/itcms/Object#unlink$267 end local.get $0 i32.load offset=8 @@ -1803,27 +1803,6 @@ (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -1854,23 +1833,17 @@ i32.const 2 i32.shl i32.add - local.tee $4 + local.tee $3 i32.load offset=4 - local.set $3 - local.get $4 - i32.load local.tee $5 local.set $4 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - i32.const 3876 - i32.load - drop - local.get $5 local.get $3 + local.get $5 i32.const 3872 i32.load call_indirect (type $0) @@ -1891,30 +1864,25 @@ local.get $5 i32.le_s if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=4 - i32.const 3876 - i32.load - drop - local.get $7 - local.get $4 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 + local.get $3 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $7 i32.store offset=8 @@ -1931,38 +1899,33 @@ i32.const 2 i32.shl i32.add - local.get $4 + local.get $3 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $5 i32.le_s if - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $7 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=8 - i32.const 3876 - i32.load - drop - local.get $7 - local.get $3 - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $5 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $7 + i32.const 2 + global.set $~argumentsLength + local.get $7 local.get $4 + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $7 i32.store offset=4 local.get $5 @@ -1978,7 +1941,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $4 i32.store offset=4 local.get $6 i32.const 2 @@ -1987,53 +1950,171 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (func $~lib/util/sort/extendRunRight (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $3 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) i32.const 0 - i32.store + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load offset=4 + local.get $4 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|0 + end + end + local.get $3 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + local.set $5 + local.get $4 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $4 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $3 + i32.gt_s + if (result i32) + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + i32.const 3872 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $while-continue|2 + end + end + end local.get $3 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $5 + local.get $3 i32.add local.set $6 - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $5 + local.set $2 loop $for-loop|0 local.get $1 - local.get $5 + local.get $2 i32.lt_s if - local.get $5 + local.get $2 i32.const 1 i32.sub - local.tee $5 + local.tee $2 i32.const 2 i32.shl local.tee $7 @@ -2048,28 +2129,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $5 + i32.gt_s if local.get $4 local.get $6 - local.get $2 + local.get $5 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $2 + local.get $5 i32.const 1 i32.add - local.set $2 + local.set $5 br $for-loop|1 end end @@ -2079,14 +2160,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $5 i32.const 2 i32.shl i32.add i32.load local.set $6 local.get $4 - local.get $5 + local.get $2 i32.const 2 i32.shl i32.add @@ -2094,12 +2175,6 @@ local.set $7 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - i32.const 3876 - i32.load - drop local.get $6 local.get $7 i32.const 3872 @@ -2115,10 +2190,10 @@ i32.add local.get $6 i32.store - local.get $2 + local.get $5 i32.const 1 i32.sub - local.set $2 + local.set $5 else local.get $0 local.get $1 @@ -2127,10 +2202,10 @@ i32.add local.get $7 i32.store - local.get $5 + local.get $2 i32.const 1 i32.add - local.set $5 + local.set $2 end local.get $1 i32.const 1 @@ -2139,10 +2214,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -3073,7 +3144,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$108 + block $__inlined_func$~lib/util/string/compareImpl$106 loop $while-continue|1 local.get $0 local.tee $3 @@ -3093,7 +3164,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$108 + br_if $__inlined_func$~lib/util/string/compareImpl$106 local.get $2 i32.const 2 i32.add @@ -3305,7 +3376,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 + block $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 local.get $0 i32.const 20 i32.sub @@ -3325,7 +3396,7 @@ global.set $~lib/memory/__stack_pointer i32.const -1 local.set $2 - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 end local.get $2 i32.const 0 @@ -3367,7 +3438,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$277 + br $__inlined_func$~lib/staticarray/StaticArray<~lib/string/String>#indexOf$274 end local.get $2 i32.const 1 @@ -3905,7 +3976,7 @@ (local $9 i32) (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 @@ -3918,9 +3989,6 @@ i64.store global.get $~lib/memory/__stack_pointer i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 0 i32.const 7 i32.const 0 call $~lib/rt/__newArray @@ -3953,12 +4021,6 @@ i32.store offset=4 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3472 - i32.store offset=8 - i32.const 3476 - i32.load - drop local.get $8 local.get $9 local.get $0 @@ -4026,7 +4088,7 @@ global.get $~lib/memory/__stack_pointer local.get $10 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$227 + block $__inlined_func$~lib/rt/itcms/__renew$224 i32.const 1073741820 local.get $1 i32.const 1 @@ -4069,7 +4131,7 @@ i32.store offset=16 local.get $1 local.set $2 - br $__inlined_func$~lib/rt/itcms/__renew$227 + br $__inlined_func$~lib/rt/itcms/__renew$224 end local.get $4 local.get $3 @@ -4140,7 +4202,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $10 @@ -4158,7 +4220,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4173,8 +4235,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4201,12 +4263,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -4214,7 +4270,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -4228,7 +4284,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -4238,7 +4294,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4253,8 +4309,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4281,12 +4337,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -4295,7 +4345,7 @@ i32.eqz if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 0 @@ -4309,7 +4359,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const 1 @@ -4319,7 +4369,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4334,8 +4384,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4362,12 +4412,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -4375,7 +4419,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -4389,7 +4433,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -4398,7 +4442,7 @@ (local $2 i32) (local $3 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4413,8 +4457,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -4443,12 +4487,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -4456,7 +4494,7 @@ call_indirect (type $1) if global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -4470,7 +4508,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer i32.const -1 @@ -4490,7 +4528,7 @@ (local $13 i32) (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -4505,11 +4543,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -4539,12 +4574,6 @@ local.set $2 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - i32.const 3876 - i32.load - drop local.get $0 local.get $2 local.get $1 @@ -4560,15 +4589,9 @@ i32.store local.get $0 i32.load offset=8 - local.set $4 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=4 - i32.const 3876 - i32.load - drop + local.set $4 + i32.const 2 + global.set $~argumentsLength local.get $1 local.get $2 local.get $3 @@ -4602,12 +4625,6 @@ local.set $2 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=8 - i32.const 3876 - i32.load - drop local.get $0 local.get $2 local.get $1 @@ -4631,7 +4648,7 @@ end global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -4700,7 +4717,7 @@ local.set $11 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -4717,7 +4734,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -4741,7 +4758,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -4760,7 +4777,7 @@ if global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 local.get $5 local.get $8 @@ -4828,7 +4845,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 local.get $7 local.get $2 @@ -4893,7 +4910,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer i32.const 3872 - i32.store offset=12 + i32.store local.get $0 local.get $3 local.get $2 @@ -4913,13 +4930,13 @@ local.get $9 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -6283,7 +6300,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$279 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$276 (result i32) i32.const 8 i32.const 10 call $~lib/rt/itcms/__new @@ -6324,7 +6341,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$279 + br $__inlined_func$~lib/staticarray/StaticArray#includes$276 end loop $while-continue|0 local.get $1 @@ -6346,7 +6363,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$279 + br $__inlined_func$~lib/staticarray/StaticArray#includes$276 end local.get $1 i32.const 1 @@ -6370,7 +6387,7 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$~lib/staticarray/StaticArray#includes$280 (result i32) + block $__inlined_func$~lib/staticarray/StaticArray#includes$277 (result i32) i32.const 4 i32.const 11 call $~lib/rt/itcms/__new @@ -6411,7 +6428,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 0 - br $__inlined_func$~lib/staticarray/StaticArray#includes$280 + br $__inlined_func$~lib/staticarray/StaticArray#includes$277 end loop $while-continue|030 local.get $1 @@ -6433,7 +6450,7 @@ i32.add global.set $~lib/memory/__stack_pointer i32.const 1 - br $__inlined_func$~lib/staticarray/StaticArray#includes$280 + br $__inlined_func$~lib/staticarray/StaticArray#includes$277 end local.get $1 i32.const 1 @@ -7247,7 +7264,7 @@ i32.const 3408 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7258,9 +7275,6 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer local.get $2 i32.store global.get $~lib/memory/__stack_pointer @@ -7302,12 +7316,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=8 - i32.const 3412 - i32.load - drop local.get $7 local.get $8 i32.add @@ -7326,7 +7334,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 12 + i32.const 8 i32.add global.set $~lib/memory/__stack_pointer local.get $6 @@ -7386,7 +7394,7 @@ i32.const 3440 i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7394,8 +7402,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer @@ -7424,12 +7432,6 @@ i32.store i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3440 - i32.store offset=4 - i32.const 3444 - i32.load - drop local.get $1 local.get $2 i32.const 3440 @@ -7443,7 +7445,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer global.get $std/staticarray/maxVal @@ -7524,7 +7526,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7532,8 +7534,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 0 local.set $0 global.get $~lib/memory/__stack_pointer @@ -7563,12 +7565,6 @@ i32.store i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3504 - i32.store offset=4 - i32.const 3508 - i32.load - drop local.get $1 local.get $6 local.get $0 @@ -7585,7 +7581,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -7608,7 +7604,7 @@ i32.const 0 local.set $1 global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7616,8 +7612,8 @@ i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer local.get $2 i32.store @@ -7647,12 +7643,6 @@ i32.store i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3536 - i32.store offset=4 - i32.const 3540 - i32.load - drop local.get $1 local.get $5 local.get $0 @@ -7669,7 +7659,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -8076,191 +8066,4 @@ global.set $~lib/memory/__stack_pointer local.get $1 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 3960 - i32.lt_s - if - i32.const 36752 - i32.const 36800 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $3 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store - i32.const 3876 - i32.load - drop - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load offset=4 - local.get $4 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=4 - i32.const 3876 - i32.load - drop - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|0 - end - end - local.get $3 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - local.set $5 - local.get $4 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $4 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $3 - i32.gt_s - if (result i32) - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3872 - i32.store offset=8 - i32.const 3876 - i32.load - drop - i32.const 3872 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $3 - ) ) diff --git a/tests/compiler/std/typedarray.debug.wat b/tests/compiler/std/typedarray.debug.wat index 3c9fc11597..9b7671a355 100644 --- a/tests/compiler/std/typedarray.debug.wat +++ b/tests/compiler/std/typedarray.debug.wat @@ -84,7 +84,6 @@ (global $~lib/native/ASC_RUNTIME i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) @@ -2723,21 +2722,7 @@ (local $b f64) (local $min f64) (local $max f64) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -2790,16 +2775,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $12) i32.const 0 @@ -2829,16 +2807,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $12) i32.const 0 @@ -2884,16 +2855,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $12) i32.const 0 @@ -2931,10 +2895,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + f64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + f64.load + f64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + f64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $12) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/nodePower (param $left i32) (param $right i32) (param $startA i32) (param $startB i32) (param $endB i32) (result i32) (local $n i64) @@ -2994,15 +3109,6 @@ (local $k i32) (local $a f64) (local $b f64) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -3094,16 +3200,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $12) i32.const 0 @@ -3140,10 +3239,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f64) (param $b f64) (result i32) (local $ia i64) @@ -8419,21 +8514,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -8486,16 +8567,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -8525,16 +8599,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -8580,16 +8647,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -8627,10 +8687,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load8_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -8639,15 +8850,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -8739,16 +8941,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -8785,10 +8980,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -8817,21 +9008,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -8884,16 +9061,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -8923,16 +9093,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -8978,16 +9141,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -9025,10 +9181,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 0 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load8_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + i32.load8_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 0 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.store8 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 0 + i32.shl + i32.add + local.get $tmp + i32.store8 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u offset=1 + local.get $ptr + local.get $j + i32.const 0 + i32.shl + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -9037,15 +9344,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -9137,16 +9435,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -9183,10 +9474,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -9263,21 +9550,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -9330,16 +9603,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -9369,16 +9635,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -9424,16 +9683,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -9471,10 +9723,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load16_s + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_s + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -9483,15 +9886,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -9583,16 +9977,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -9629,10 +10016,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -9661,21 +10044,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -9728,16 +10097,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -9767,16 +10129,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -9822,16 +10177,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -9869,10 +10217,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load16_u + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + i32.load16_u + local.set $tmp + local.get $ptr + local.get $i + i32.const 1 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.store16 + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 1 + i32.shl + i32.add + local.get $tmp + i32.store16 + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u offset=2 + local.get $ptr + local.get $j + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -9881,15 +10380,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -9981,16 +10471,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -10027,10 +10510,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -10073,21 +10552,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -10140,16 +10605,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -10179,16 +10637,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -10234,16 +10685,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -10281,10 +10725,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -10293,15 +10888,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -10393,16 +10979,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -10439,10 +11018,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -10465,21 +11040,7 @@ (local $b i32) (local $min i32) (local $max i32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -10532,16 +11093,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 @@ -10571,16 +11125,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $0) i32.const 0 @@ -10626,16 +11173,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $0) i32.const 0 @@ -10673,10 +11213,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + i32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + i32.load + i32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + i32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -10685,15 +11376,6 @@ (local $k i32) (local $a i32) (local $b i32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -10785,16 +11467,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $0) i32.const 0 @@ -10831,10 +11506,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i32) (param $b i32) (result i32) local.get $a @@ -10861,21 +11532,7 @@ (local $b i64) (local $min i64) (local $max i64) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -10928,16 +11585,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -10967,16 +11617,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -11022,16 +11665,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -11069,10 +11705,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -11081,15 +11868,6 @@ (local $k i32) (local $a i64) (local $b i64) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -11181,16 +11959,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -11227,10 +11998,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) local.get $a @@ -11257,21 +12024,7 @@ (local $b i64) (local $min i64) (local $max i64) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -11324,16 +12077,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 @@ -11363,16 +12109,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $8) i32.const 0 @@ -11418,16 +12157,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $8) i32.const 0 @@ -11465,10 +12197,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp i64) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i64.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + i64.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 3 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + i64.load + i64.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 3 + i32.shl + i32.add + local.get $tmp + i64.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load offset=8 + local.get $ptr + local.get $j + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $8) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -11477,15 +12360,6 @@ (local $k i32) (local $a i64) (local $b i64) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -11577,16 +12451,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $8) i32.const 0 @@ -11623,10 +12490,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a i64) (param $b i64) (result i32) local.get $a @@ -11653,21 +12516,7 @@ (local $b f32) (local $min f32) (local $max f32) - (local $11 i32) (local $j i32) - (local $13 i32) - (local $14 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 i32.const 0 i32.const 1 i32.ge_s @@ -11720,16 +12569,9 @@ local.set $max local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $13) i32.const 0 @@ -11759,16 +12601,9 @@ local.set $a local.get $a local.get $max - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $13 - i32.store offset=4 - local.get $13 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $13 i32.load call_indirect (type $13) i32.const 0 @@ -11814,16 +12649,9 @@ local.set $a local.get $a local.get $min - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $14 - i32.store offset=8 - local.get $14 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $14 i32.load call_indirect (type $13) i32.const 0 @@ -11861,10 +12689,161 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) + (local $j i32) + (local $k i32) + (local $tmp f32) + local.get $i + local.get $right + i32.eq + if + local.get $i + return + end + local.get $i + local.set $j + local.get $ptr + local.get $j + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f32.load + local.get $ptr + local.get $j + i32.const 1 + i32.add + local.tee $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|0 + end + end + local.get $j + local.set $k + loop $while-continue|1 + local.get $i + local.get $k + i32.lt_s + if + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + f32.load + local.set $tmp + local.get $ptr + local.get $i + i32.const 2 + i32.shl + i32.add + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + f32.load + f32.store + local.get $i + i32.const 1 + i32.add + local.set $i + local.get $ptr + local.get $k + i32.const 2 + i32.shl + i32.add + local.get $tmp + f32.store + local.get $k + i32.const 1 + i32.sub + local.set $k + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $j + local.get $right + i32.lt_s + if (result i32) + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load offset=4 + local.get $ptr + local.get $j + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $comparator + i32.load + call_indirect (type $13) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $j + i32.const 1 + i32.add + local.set $j + br $while-continue|2 + end + end + end + local.get $j + return ) (func $~lib/util/sort/mergeRuns (param $ptr i32) (param $l i32) (param $m i32) (param $r i32) (param $buffer i32) (param $comparator i32) (local $i i32) @@ -11873,15 +12852,6 @@ (local $k i32) (local $a f32) (local $b f32) - (local $12 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store local.get $m i32.const 1 i32.sub @@ -11973,16 +12943,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $12 - i32.store - local.get $12 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $12 i32.load call_indirect (type $13) i32.const 0 @@ -12019,10 +12982,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $a f32) (param $b f32) (result i32) (local $ia i32) @@ -15567,13 +16526,10 @@ (local $3 i32) (local $a f64) (local $b f64) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 f64) - (local $b|10 f64) - (local $11 i32) - (local $c|12 i32) + (local $a|7 f64) + (local $b|8 f64) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -15584,32 +16540,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -15619,7 +16572,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -15651,16 +16604,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $12) i32.const 0 @@ -15682,16 +16628,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $12) i32.const 0 @@ -15712,41 +16651,34 @@ end local.get $ptr f64.load - local.set $a|9 + local.set $a|7 local.get $ptr f64.load offset=8 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $12) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select f64.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select f64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -15758,14 +16690,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -15829,11 +16761,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -15845,13 +16777,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -15860,11 +16792,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -15884,11 +16816,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -15902,15 +16834,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -15919,11 +16851,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -15934,14 +16866,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -15954,7 +16886,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -15964,26 +16896,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -16011,27 +16943,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -16041,17 +16973,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -16060,7 +16992,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -17481,9 +18413,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -17491,8 +18422,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -17505,21 +18436,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -17536,21 +18467,14 @@ i32.load8_s local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -17564,12 +18488,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int8Array,i8,i8>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int8Array,i8>" @@ -17704,9 +18628,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -17714,8 +18637,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -17728,21 +18651,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -17759,21 +18682,14 @@ i32.load8_u local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -17787,12 +18703,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint8Array,u8>" @@ -17885,9 +18801,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -17895,8 +18810,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -17909,21 +18824,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -17940,21 +18855,14 @@ i32.load8_u local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -17968,12 +18876,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint8ClampedArray,u8>" @@ -18113,9 +19021,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18123,8 +19030,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18137,21 +19044,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -18168,21 +19075,14 @@ i32.load16_s local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18196,12 +19096,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int16Array,i16,i16>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int16Array,i16>" @@ -18340,9 +19240,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18350,8 +19249,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18364,21 +19263,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -18395,21 +19294,14 @@ i32.load16_u local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18423,12 +19315,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint16Array,u16>" @@ -18521,9 +19413,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18531,8 +19422,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18545,21 +19436,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -18576,21 +19467,14 @@ i32.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18604,12 +19488,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int32Array,i32,i32>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int32Array,i32>" @@ -18747,9 +19631,8 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18757,8 +19640,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -18771,21 +19654,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -18802,21 +19685,14 @@ i32.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -18830,12 +19706,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint32Array,u32>" @@ -18973,10 +19849,9 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) - (local $11 i64) + (local $10 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -18984,8 +19859,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -18998,21 +19873,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -19029,21 +19904,14 @@ i64.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -19057,12 +19925,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Int64Array,i64,i64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Int64Array,i64>" @@ -19200,10 +20068,9 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) - (local $11 i64) + (local $10 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19211,8 +20078,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -19225,21 +20092,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -19256,21 +20123,14 @@ i64.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -19284,12 +20144,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64>" @@ -19427,10 +20287,9 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) - (local $11 f32) + (local $10 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19438,8 +20297,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) global.get $~lib/memory/__stack_pointer local.get $this @@ -19452,21 +20311,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -19483,21 +20342,14 @@ f32.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $20) local.set $initialValue|5 @@ -19511,12 +20363,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Float32Array,f32,f32>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Float32Array,f32>" @@ -19607,10 +20459,9 @@ (local $i i32) (local $k i32) (local $9 i32) - (local $10 i32) - (local $11 f64) + (local $10 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -19618,8 +20469,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) global.get $~lib/memory/__stack_pointer local.get $this @@ -19632,21 +20483,21 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 + local.get $9 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -19663,21 +20514,14 @@ f64.load local.get $i local.get $array - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - local.get $10 + local.get $9 i32.store offset=8 - local.get $10 - global.get $~lib/memory/__stack_pointer + local.get $9 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $9 - i32.store offset=12 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 i32.load call_indirect (type $21) local.set $initialValue|5 @@ -19691,12 +20535,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE<~lib/typedarray/Float64Array,f64,f64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testReduce<~lib/typedarray/Float64Array,f64>" @@ -21615,9 +22459,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -21625,8 +22468,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -21639,19 +22482,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Int8Array#get:length i32.const 1 i32.sub @@ -21670,21 +22513,14 @@ i32.load8_s local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -21698,12 +22534,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int8Array,i8,i8>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int8Array,i8>" @@ -21794,9 +22630,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -21804,8 +22639,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -21818,19 +22653,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Uint8Array#get:length i32.const 1 i32.sub @@ -21849,21 +22684,14 @@ i32.load8_u local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -21877,12 +22705,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8Array,u8,u8>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8Array,u8>" @@ -21974,9 +22802,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -21984,8 +22811,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -21998,19 +22825,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Uint8ClampedArray#get:length i32.const 1 i32.sub @@ -22029,21 +22856,14 @@ i32.load8_u local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22057,12 +22877,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint8ClampedArray,u8,u8>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint8ClampedArray,u8>" @@ -22154,9 +22974,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22164,8 +22983,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22178,19 +22997,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -22209,21 +23028,14 @@ i32.load16_s local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22237,12 +23049,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int16Array,i16,i16>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int16Array,i16>" @@ -22333,9 +23145,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22343,8 +23154,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22357,19 +23168,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Uint16Array#get:length i32.const 1 i32.sub @@ -22388,21 +23199,14 @@ i32.load16_u local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22416,12 +23220,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint16Array,u16,u16>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint16Array,u16>" @@ -22513,9 +23317,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22523,8 +23326,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22537,19 +23340,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -22568,21 +23371,14 @@ i32.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22596,12 +23392,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int32Array,i32,i32>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int32Array,i32>" @@ -22691,9 +23487,8 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22701,8 +23496,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -22715,19 +23510,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Uint32Array#get:length i32.const 1 i32.sub @@ -22746,21 +23541,14 @@ i32.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $6) local.set $initialValue|5 @@ -22774,12 +23562,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint32Array,u32,u32>|inlined.0" end - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $9 + local.get $8 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint32Array,u32>" @@ -22869,10 +23657,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) - (local $10 i64) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -22880,8 +23667,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -22894,19 +23681,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -22925,21 +23712,14 @@ i64.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -22953,12 +23733,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Int64Array,i64,i64>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64>" @@ -23048,10 +23828,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) - (local $10 i64) + (local $9 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23059,8 +23838,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" (result i64) global.get $~lib/memory/__stack_pointer local.get $this @@ -23073,19 +23852,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Uint64Array#get:length i32.const 1 i32.sub @@ -23104,21 +23883,14 @@ i64.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $16) local.set $initialValue|5 @@ -23132,12 +23904,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Uint64Array,u64,u64>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64>" @@ -23227,10 +23999,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) - (local $10 f32) + (local $9 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23238,8 +24009,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" (result f32) global.get $~lib/memory/__stack_pointer local.get $this @@ -23252,19 +24023,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Float32Array#get:length i32.const 1 i32.sub @@ -23283,21 +24054,14 @@ f32.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $20) local.set $initialValue|5 @@ -23311,12 +24075,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float32Array,f32,f32>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32>" @@ -23406,10 +24170,9 @@ (local $ptr i32) (local $i i32) (local $8 i32) - (local $9 i32) - (local $10 f64) + (local $9 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -23417,8 +24180,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" (result f64) global.get $~lib/memory/__stack_pointer local.get $this @@ -23431,19 +24194,19 @@ local.get $initialValue local.set $initialValue|5 local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 + local.get $8 call $~lib/typedarray/Float64Array#get:length i32.const 1 i32.sub @@ -23462,21 +24225,14 @@ f64.load local.get $i local.get $array - local.set $9 + local.set $8 global.get $~lib/memory/__stack_pointer - local.get $9 + local.get $8 i32.store offset=8 - local.get $9 - global.get $~lib/memory/__stack_pointer + local.get $8 i32.const 4 global.set $~argumentsLength local.get $fn|4 - local.tee $8 - i32.store offset=12 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $21) local.set $initialValue|5 @@ -23490,12 +24246,12 @@ local.get $initialValue|5 br $"~lib/typedarray/REDUCE_RIGHT<~lib/typedarray/Float64Array,f64,f64>|inlined.0" end - local.set $10 + local.set $9 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $10 + local.get $9 return ) (func $"std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64>" @@ -23588,15 +24344,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -23608,19 +24363,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Int8Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -23659,21 +24414,14 @@ i32.load8_s local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -23700,12 +24448,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Int8Array,i8>" @@ -23844,15 +24592,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -23864,19 +24611,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Uint8Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -23915,21 +24662,14 @@ i32.load8_u local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -23956,12 +24696,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Uint8Array#__get (param $this i32) (param $index i32) (result i32) @@ -24145,15 +24885,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24165,19 +24904,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24216,21 +24955,14 @@ i32.load8_u local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store8 @@ -24257,12 +24989,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Uint8ClampedArray,u8>" @@ -24401,15 +25133,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24421,19 +25152,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Int16Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24472,21 +25203,14 @@ i32.load16_s local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store16 @@ -24513,12 +25237,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Int16Array#__get (param $this i32) (param $index i32) (result i32) @@ -24706,15 +25430,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -24726,19 +25449,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Uint16Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -24777,21 +25500,14 @@ i32.load16_u local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store16 @@ -24818,12 +25534,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Uint16Array#__get (param $this i32) (param $index i32) (result i32) @@ -25011,15 +25727,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25031,19 +25746,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Int32Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25082,21 +25797,14 @@ i32.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store @@ -25123,12 +25831,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Int32Array,i32>" @@ -25267,15 +25975,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25287,19 +25994,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Uint32Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25338,21 +26045,14 @@ i32.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $1) i32.store @@ -25379,12 +26079,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Uint32Array#__get (param $this i32) (param $index i32) (result i32) @@ -25572,15 +26272,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25592,19 +26291,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Int64Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25643,21 +26342,14 @@ i64.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $22) i64.store @@ -25684,12 +26376,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Int64Array#__get (param $this i32) (param $index i32) (result i64) @@ -25878,15 +26570,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -25898,19 +26589,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Uint64Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -25949,21 +26640,14 @@ i64.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $22) i64.store @@ -25990,12 +26674,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Uint64Array#__get (param $this i32) (param $index i32) (result i64) @@ -26184,15 +26868,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26204,19 +26887,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Float32Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26255,21 +26938,14 @@ f32.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $30) f32.store @@ -26296,12 +26972,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $~lib/typedarray/Float32Array#__get (param $this i32) (param $index i32) (result f32) @@ -26490,15 +27166,14 @@ (local $buf i32) (local $i i32) (local $10 i32) - (local $11 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26510,19 +27185,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/typedarray/Float64Array#get:length local.set $len local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 + local.get $10 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $len @@ -26561,21 +27236,14 @@ f64.load local.get $i local.get $array - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - local.get $11 + local.get $10 i32.store offset=8 - local.get $11 - global.get $~lib/memory/__stack_pointer + local.get $10 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $10 - i32.store offset=20 - local.get $10 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $10 i32.load call_indirect (type $31) f64.store @@ -26602,12 +27270,12 @@ local.get $out br $"~lib/typedarray/MAP<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $11 + local.set $10 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $11 + local.get $10 return ) (func $"std/typedarray/testArrayMap<~lib/typedarray/Float64Array,f64>" @@ -26747,18 +27415,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -26770,11 +27437,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Int8Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -26792,11 +27459,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -26818,31 +27485,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 0 i32.shl i32.add @@ -26880,12 +27540,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int8Array,i8>" @@ -27079,18 +27739,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27102,11 +27761,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Uint8Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -27124,11 +27783,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -27150,31 +27809,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 0 i32.shl i32.add @@ -27212,12 +27864,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8Array,u8>" @@ -27411,18 +28063,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27434,11 +28085,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -27456,11 +28107,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -27482,31 +28133,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 0 i32.shl i32.add @@ -27544,12 +28188,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint8ClampedArray,u8>" @@ -27743,18 +28387,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -27766,11 +28409,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Int16Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -27788,11 +28431,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -27814,31 +28457,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 1 i32.shl i32.add @@ -27876,12 +28512,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int16Array,i16>" @@ -28075,18 +28711,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28098,11 +28733,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Uint16Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28120,11 +28755,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28146,31 +28781,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 1 i32.shl i32.add @@ -28208,12 +28836,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint16Array,u16>" @@ -28407,18 +29035,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28430,11 +29057,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Int32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28452,11 +29079,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28478,31 +29105,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 2 i32.shl i32.add @@ -28540,12 +29160,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int32Array,i32>" @@ -28739,18 +29359,17 @@ (local $i i32) (local $value i32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -28762,11 +29381,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Uint32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -28784,11 +29403,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -28810,31 +29429,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $1) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 2 i32.shl i32.add @@ -28872,12 +29484,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint32Array,u32>" @@ -29071,18 +29683,17 @@ (local $i i32) (local $value i64) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29094,11 +29705,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Int64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29116,11 +29727,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29142,31 +29753,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $7) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 3 i32.shl i32.add @@ -29204,12 +29808,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Int64Array,i64>" @@ -29403,18 +30007,17 @@ (local $i i32) (local $value i64) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29426,11 +30029,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Uint64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29448,11 +30051,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29474,31 +30077,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $7) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 3 i32.shl i32.add @@ -29536,12 +30132,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Uint64Array,u64>" @@ -29735,18 +30331,17 @@ (local $i i32) (local $value f32) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -29758,11 +30353,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Float32Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -29780,11 +30375,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -29806,31 +30401,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $9) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 2 i32.shl i32.add @@ -29868,12 +30456,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float32Array,f32>" @@ -30067,18 +30655,17 @@ (local $i i32) (local $value f64) (local $11 i32) - (local $12 i32) (local $byteLength i32) (local $data i32) - (local $15 i32) + (local $14 i32) global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill block $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer @@ -30090,11 +30677,11 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/typedarray/Float64Array#get:length local.set $len global.get $~lib/memory/__stack_pointer @@ -30112,11 +30699,11 @@ local.tee $buf i32.store offset=16 local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 + local.get $14 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $dataStart i32.const 0 @@ -30138,31 +30725,24 @@ local.get $value local.get $i local.get $array - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - local.get $15 + local.get $14 i32.store offset=8 - local.get $15 - global.get $~lib/memory/__stack_pointer + local.get $14 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $11 - i32.store offset=20 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $10) if local.get $buf local.get $j - local.tee $12 + local.tee $11 i32.const 1 i32.add local.set $j - local.get $12 + local.get $11 i32.const 3 i32.shl i32.add @@ -30200,12 +30780,12 @@ local.get $out br $"~lib/typedarray/FILTER<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $15 + local.set $14 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer - local.get $15 + local.get $14 return ) (func $"std/typedarray/testArrayFilter<~lib/typedarray/Float64Array,f64>" @@ -30395,9 +30975,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -30405,8 +30984,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -30417,21 +30996,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -30447,21 +31026,14 @@ i32.load8_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -30478,12 +31050,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int8Array,i8>" @@ -30598,9 +31170,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -30608,8 +31179,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -30620,21 +31191,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -30650,21 +31221,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -30681,12 +31245,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8Array,u8>" @@ -30801,9 +31365,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -30811,8 +31374,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -30823,21 +31386,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -30853,21 +31416,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -30884,12 +31440,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint8ClampedArray,u8>" @@ -31004,9 +31560,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31014,8 +31569,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31026,21 +31581,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -31056,21 +31611,14 @@ i32.load16_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -31087,12 +31635,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int16Array,i16>" @@ -31207,9 +31755,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31217,8 +31764,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31229,21 +31776,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -31259,21 +31806,14 @@ i32.load16_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -31290,12 +31830,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint16Array,u16>" @@ -31410,9 +31950,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31420,8 +31959,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31432,21 +31971,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -31462,21 +32001,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -31493,12 +32025,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int32Array,i32>" @@ -31613,9 +32145,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31623,8 +32154,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31635,21 +32166,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -31665,21 +32196,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -31696,12 +32220,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint32Array,u32>" @@ -31816,9 +32340,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -31826,8 +32349,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -31838,21 +32361,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -31868,21 +32391,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -31899,12 +32415,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Int64Array,i64>" @@ -32019,9 +32535,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32029,8 +32544,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32041,21 +32556,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -32071,21 +32586,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -32102,12 +32610,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Uint64Array,u64>" @@ -32222,9 +32730,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32232,8 +32739,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32244,21 +32751,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -32274,21 +32781,14 @@ f32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $9) if @@ -32305,12 +32805,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Float32Array,f32>" @@ -32425,9 +32925,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32435,8 +32934,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32447,21 +32946,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -32477,21 +32976,14 @@ f64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $10) if @@ -32508,12 +33000,12 @@ i32.const 0 br $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArraySome<~lib/typedarray/Float64Array,f64>" @@ -32628,9 +33120,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32638,8 +33129,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32650,21 +33141,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -32680,21 +33171,14 @@ i32.load8_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -32711,12 +33195,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int8Array,i8>" @@ -32832,9 +33316,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -32842,8 +33325,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -32854,21 +33337,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -32884,21 +33367,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -32915,12 +33391,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8Array,u8>" @@ -33036,9 +33512,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33046,8 +33521,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33058,21 +33533,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -33088,21 +33563,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -33119,12 +33587,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint8ClampedArray,u8>" @@ -33240,9 +33708,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33250,8 +33717,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33262,21 +33729,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -33292,21 +33759,14 @@ i32.load16_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -33323,12 +33783,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int16Array,i16>" @@ -33444,9 +33904,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33454,8 +33913,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33466,21 +33925,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -33496,21 +33955,14 @@ i32.load16_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -33527,12 +33979,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint16Array,u16>" @@ -33648,9 +34100,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33658,8 +34109,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33670,21 +34121,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -33700,21 +34151,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -33731,12 +34175,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int32Array,i32>" @@ -33852,9 +34296,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -33862,8 +34305,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -33874,21 +34317,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -33904,21 +34347,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -33935,12 +34371,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint32Array,u32>" @@ -34056,9 +34492,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34066,8 +34501,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34078,21 +34513,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -34108,21 +34543,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -34139,12 +34567,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Int64Array,i64>" @@ -34260,9 +34688,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34270,8 +34697,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34282,21 +34709,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -34312,21 +34739,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -34343,12 +34763,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Uint64Array,u64>" @@ -34464,9 +34884,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34474,8 +34893,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34486,21 +34905,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -34516,21 +34935,14 @@ f32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $9) if @@ -34547,12 +34959,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float32Array,f32>" @@ -34668,9 +35080,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34678,8 +35089,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34690,21 +35101,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -34720,21 +35131,14 @@ f64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $10) if @@ -34751,12 +35155,12 @@ i32.const -1 br $"~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayFindIndex<~lib/typedarray/Float64Array,f64>" @@ -34871,9 +35275,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -34881,8 +35284,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -34893,19 +35296,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Int8Array#get:length i32.const 1 i32.sub @@ -34923,21 +35326,14 @@ i32.load8_s local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -34954,12 +35350,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int8Array,i8>" @@ -35074,9 +35470,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35084,8 +35479,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35096,19 +35491,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Uint8Array#get:length i32.const 1 i32.sub @@ -35126,21 +35521,14 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -35157,12 +35545,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8Array,u8>" @@ -35277,9 +35665,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35287,8 +35674,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35299,19 +35686,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Uint8ClampedArray#get:length i32.const 1 i32.sub @@ -35329,21 +35716,14 @@ i32.load8_u local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -35360,12 +35740,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint8ClampedArray,u8>" @@ -35480,9 +35860,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35490,8 +35869,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35502,19 +35881,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Int16Array#get:length i32.const 1 i32.sub @@ -35532,21 +35911,14 @@ i32.load16_s local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -35563,12 +35935,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int16Array,i16>" @@ -35683,9 +36055,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35693,8 +36064,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35705,19 +36076,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Uint16Array#get:length i32.const 1 i32.sub @@ -35735,21 +36106,14 @@ i32.load16_u local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -35766,12 +36130,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint16Array,u16>" @@ -35886,9 +36250,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -35896,8 +36259,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -35908,19 +36271,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Int32Array#get:length i32.const 1 i32.sub @@ -35938,21 +36301,14 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -35969,12 +36325,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int32Array,i32>" @@ -36089,9 +36445,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36099,8 +36454,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36111,19 +36466,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Uint32Array#get:length i32.const 1 i32.sub @@ -36141,21 +36496,14 @@ i32.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $1) if @@ -36172,12 +36520,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint32Array,u32>" @@ -36292,9 +36640,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36302,8 +36649,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36314,19 +36661,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Int64Array#get:length i32.const 1 i32.sub @@ -36344,21 +36691,14 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $7) if @@ -36375,12 +36715,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Int64Array,i64>" @@ -36495,9 +36835,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36505,8 +36844,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36517,19 +36856,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Uint64Array#get:length i32.const 1 i32.sub @@ -36547,21 +36886,14 @@ i64.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $7) if @@ -36578,12 +36910,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Uint64Array,u64>" @@ -36698,9 +37030,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36708,8 +37039,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36720,19 +37051,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Float32Array#get:length i32.const 1 i32.sub @@ -36750,21 +37081,14 @@ f32.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $9) if @@ -36781,12 +37105,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float32Array,f32>" @@ -36901,9 +37225,8 @@ (local $ptr i32) (local $i i32) (local $6 i32) - (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -36911,8 +37234,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -36923,19 +37246,19 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 + local.get $6 call $~lib/typedarray/Float64Array#get:length i32.const 1 i32.sub @@ -36953,21 +37276,14 @@ f64.load local.get $i local.get $array - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=8 - local.get $7 - global.get $~lib/memory/__stack_pointer + local.get $6 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $6 - i32.store offset=12 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $10) if @@ -36984,12 +37300,12 @@ i32.const -1 br $"~lib/typedarray/FIND_LAST_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $7 + local.set $6 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $7 + local.get $6 return ) (func $"std/typedarray/testArrayFindLastIndex<~lib/typedarray/Float64Array,f64>" @@ -37105,9 +37421,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37115,8 +37430,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37127,21 +37442,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -37158,21 +37473,14 @@ i32.load8_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -37191,12 +37499,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int8Array,i8>" @@ -37311,9 +37619,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37321,8 +37628,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37333,21 +37640,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -37364,21 +37671,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -37397,12 +37697,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8Array,u8>" @@ -37517,9 +37817,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37527,8 +37826,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37539,21 +37838,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -37570,21 +37869,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -37603,12 +37895,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint8ClampedArray,u8>" @@ -37723,9 +38015,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37733,8 +38024,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37745,21 +38036,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -37776,21 +38067,14 @@ i32.load16_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -37809,12 +38093,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int16Array,i16>" @@ -37929,9 +38213,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -37939,8 +38222,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -37951,21 +38234,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -37982,21 +38265,14 @@ i32.load16_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -38015,12 +38291,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint16Array,u16>" @@ -38135,9 +38411,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38145,8 +38420,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38157,21 +38432,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -38188,21 +38463,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -38221,12 +38489,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int32Array,i32>" @@ -38341,9 +38609,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38351,8 +38618,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38363,21 +38630,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -38394,21 +38661,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $1) if @@ -38427,12 +38687,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint32Array,u32>" @@ -38547,9 +38807,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38557,8 +38816,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38569,21 +38828,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -38600,21 +38859,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -38633,12 +38885,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Int64Array,i64>" @@ -38753,9 +39005,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38763,8 +39014,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38775,21 +39026,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -38806,21 +39057,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $7) if @@ -38839,12 +39083,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Uint64Array,u64>" @@ -38959,9 +39203,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -38969,8 +39212,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -38981,21 +39224,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -39012,21 +39255,14 @@ f32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $9) if @@ -39045,12 +39281,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float32Array,f32>" @@ -39165,9 +39401,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39175,8 +39410,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $this @@ -39187,21 +39422,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -39218,21 +39453,14 @@ f64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $10) if @@ -39251,12 +39479,12 @@ i32.const 1 br $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" end - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $8 + local.get $7 return ) (func $"std/typedarray/testArrayEvery<~lib/typedarray/Float64Array,f64>" @@ -39438,9 +39666,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39448,8 +39675,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -39459,21 +39686,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int8Array#get:length local.set $k loop $for-loop|0 @@ -39489,21 +39716,14 @@ i32.load8_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -39514,7 +39734,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -39699,9 +39919,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39709,8 +39928,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -39720,21 +39939,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8Array#get:length local.set $k loop $for-loop|0 @@ -39750,21 +39969,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -39775,7 +39987,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -39963,9 +40175,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -39973,8 +40184,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -39984,21 +40195,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint8ClampedArray#get:length local.set $k loop $for-loop|0 @@ -40014,21 +40225,14 @@ i32.load8_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40039,7 +40243,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40225,9 +40429,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40235,8 +40438,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40246,21 +40449,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int16Array#get:length local.set $k loop $for-loop|0 @@ -40276,21 +40479,14 @@ i32.load16_s local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40301,7 +40497,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40486,9 +40682,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40496,8 +40691,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40507,21 +40702,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint16Array#get:length local.set $k loop $for-loop|0 @@ -40537,21 +40732,14 @@ i32.load16_u local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40562,7 +40750,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -40746,9 +40934,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -40756,8 +40943,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -40767,21 +40954,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int32Array#get:length local.set $k loop $for-loop|0 @@ -40797,21 +40984,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -40822,7 +41002,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41000,9 +41180,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41010,8 +41189,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41021,21 +41200,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint32Array#get:length local.set $k loop $for-loop|0 @@ -41051,21 +41230,14 @@ i32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $5) local.get $i @@ -41076,7 +41248,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41255,9 +41427,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41265,8 +41436,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41276,21 +41447,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Int64Array#get:length local.set $k loop $for-loop|0 @@ -41306,21 +41477,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $26) local.get $i @@ -41331,7 +41495,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41513,9 +41677,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41523,8 +41686,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41534,21 +41697,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Uint64Array#get:length local.set $k loop $for-loop|0 @@ -41564,21 +41727,14 @@ i64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $26) local.get $i @@ -41589,7 +41745,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -41771,9 +41927,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -41781,8 +41936,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -41792,21 +41947,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float32Array#get:length local.set $k loop $for-loop|0 @@ -41822,21 +41977,14 @@ f32.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $37) local.get $i @@ -41847,7 +41995,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -42029,9 +42177,8 @@ (local $i i32) (local $k i32) (local $7 i32) - (local $8 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check @@ -42039,8 +42186,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $this local.tee $array @@ -42050,21 +42197,21 @@ local.tee $fn|3 i32.store offset=4 local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/arraybuffer/ArrayBufferView#get:dataStart local.set $ptr i32.const 0 local.set $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 + local.get $7 call $~lib/typedarray/Float64Array#get:length local.set $k loop $for-loop|0 @@ -42080,21 +42227,14 @@ f64.load local.get $i local.get $array - local.set $8 + local.set $7 global.get $~lib/memory/__stack_pointer - local.get $8 + local.get $7 i32.store offset=8 - local.get $8 - global.get $~lib/memory/__stack_pointer + local.get $7 i32.const 3 global.set $~argumentsLength local.get $fn|3 - local.tee $7 - i32.store offset=12 - local.get $7 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $7 i32.load call_indirect (type $38) local.get $i @@ -42105,7 +42245,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -80327,13 +80467,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -80344,32 +80481,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -80379,7 +80513,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -80411,16 +80545,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -80442,16 +80569,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -80472,41 +80592,34 @@ end local.get $ptr i32.load8_s - local.set $a|9 + local.set $a|7 local.get $ptr i32.load8_s offset=1 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store8 local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -80518,14 +80631,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -80589,11 +80702,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -80605,13 +80718,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -80620,11 +80733,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -80644,11 +80757,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -80662,15 +80775,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -80679,11 +80792,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -80694,14 +80807,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -80714,7 +80827,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -80724,26 +80837,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -80771,27 +80884,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -80801,17 +80914,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -80820,7 +80933,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -81117,13 +81230,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -81134,32 +81244,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -81169,7 +81276,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -81201,16 +81308,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -81232,16 +81332,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -81262,41 +81355,34 @@ end local.get $ptr i32.load8_u - local.set $a|9 + local.set $a|7 local.get $ptr i32.load8_u offset=1 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store8 local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store8 offset=1 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -81308,14 +81394,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -81379,11 +81465,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -81395,13 +81481,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -81410,11 +81496,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -81434,11 +81520,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -81452,15 +81538,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -81469,11 +81555,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -81484,14 +81570,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -81504,7 +81590,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -81514,26 +81600,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -81561,27 +81647,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -81591,17 +81677,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -81610,7 +81696,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -82192,13 +82278,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -82209,32 +82292,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -82244,7 +82324,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -82276,16 +82356,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -82307,16 +82380,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -82337,41 +82403,34 @@ end local.get $ptr i32.load16_s - local.set $a|9 + local.set $a|7 local.get $ptr i32.load16_s offset=2 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store16 local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store16 offset=2 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -82383,14 +82442,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -82454,11 +82513,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -82470,13 +82529,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -82485,11 +82544,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -82509,11 +82568,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -82527,15 +82586,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -82544,11 +82603,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -82559,14 +82618,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -82579,7 +82638,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -82589,26 +82648,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -82636,27 +82695,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -82666,17 +82725,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -82685,7 +82744,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -82982,13 +83041,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -82999,32 +83055,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -83034,7 +83087,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -83066,16 +83119,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -83097,16 +83143,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -83127,41 +83166,34 @@ end local.get $ptr i32.load16_u - local.set $a|9 + local.set $a|7 local.get $ptr i32.load16_u offset=2 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store16 local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store16 offset=2 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -83173,14 +83205,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -83244,11 +83276,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -83260,13 +83292,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -83275,11 +83307,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -83299,11 +83331,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -83317,15 +83349,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -83334,11 +83366,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -83349,14 +83381,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -83369,7 +83401,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -83379,26 +83411,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -83426,27 +83458,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -83456,17 +83488,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -83475,7 +83507,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -83770,13 +83802,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -83787,32 +83816,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -83822,7 +83848,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -83854,16 +83880,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -83885,16 +83904,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -83915,41 +83927,34 @@ end local.get $ptr i32.load - local.set $a|9 + local.set $a|7 local.get $ptr i32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -83961,14 +83966,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -84032,11 +84037,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -84048,13 +84053,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -84063,11 +84068,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84087,11 +84092,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -84105,15 +84110,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -84122,11 +84127,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84137,14 +84142,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -84157,7 +84162,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -84167,26 +84172,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -84214,27 +84219,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -84244,17 +84249,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -84263,7 +84268,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -84560,13 +84565,10 @@ (local $3 i32) (local $a i32) (local $b i32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i32) - (local $b|10 i32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i32) + (local $b|8 i32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -84577,32 +84579,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -84612,7 +84611,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -84644,16 +84643,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $0) i32.const 0 @@ -84675,16 +84667,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $0) i32.const 0 @@ -84705,41 +84690,34 @@ end local.get $ptr i32.load - local.set $a|9 + local.set $a|7 local.get $ptr i32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $0) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -84751,14 +84729,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -84822,11 +84800,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -84838,13 +84816,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -84853,11 +84831,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84877,11 +84855,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -84895,15 +84873,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -84912,11 +84890,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -84927,14 +84905,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -84947,7 +84925,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -84957,26 +84935,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -85004,27 +84982,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -85034,17 +85012,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -85053,7 +85031,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -85348,13 +85326,10 @@ (local $3 i32) (local $a i64) (local $b i64) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i64) - (local $b|10 i64) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i64) + (local $b|8 i64) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -85365,32 +85340,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -85400,7 +85372,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -85432,16 +85404,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -85463,16 +85428,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -85493,41 +85451,34 @@ end local.get $ptr i64.load - local.set $a|9 + local.set $a|7 local.get $ptr i64.load offset=8 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i64.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -85539,14 +85490,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -85610,11 +85561,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -85626,13 +85577,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -85641,11 +85592,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -85665,11 +85616,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -85683,15 +85634,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -85700,11 +85651,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -85715,14 +85666,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -85735,7 +85686,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -85745,26 +85696,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -85792,27 +85743,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -85822,17 +85773,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -85841,7 +85792,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -86138,13 +86089,10 @@ (local $3 i32) (local $a i64) (local $b i64) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 i64) - (local $b|10 i64) - (local $11 i32) - (local $c|12 i32) + (local $a|7 i64) + (local $b|8 i64) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -86155,32 +86103,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -86190,7 +86135,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -86222,16 +86167,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $8) i32.const 0 @@ -86253,16 +86191,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $8) i32.const 0 @@ -86283,41 +86214,34 @@ end local.get $ptr i64.load - local.set $a|9 + local.set $a|7 local.get $ptr i64.load offset=8 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $8) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select i64.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select i64.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -86329,14 +86253,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -86400,11 +86324,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -86416,13 +86340,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -86431,11 +86355,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -86455,11 +86379,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -86473,15 +86397,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -86490,11 +86414,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -86505,14 +86429,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -86525,7 +86449,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -86535,26 +86459,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -86582,27 +86506,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -86612,17 +86536,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -86631,7 +86555,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -86926,13 +86850,10 @@ (local $3 i32) (local $a f32) (local $b f32) - (local $6 i32) (local $c i32) - (local $8 i32) - (local $a|9 f32) - (local $b|10 f32) - (local $11 i32) - (local $c|12 i32) + (local $a|7 f32) + (local $b|8 f32) + (local $c|9 i32) (local $n i32) (local $lgPlus2 i32) (local $lgPlus2Size i32) @@ -86943,32 +86864,29 @@ (local $hi i32) (local $endA i32) (local $lenA i32) - (local $23 i32) - (local $24 i32) + (local $20 i32) + (local $21 i32) (local $top i32) (local $startA i32) (local $startB i32) (local $endB i32) (local $lenB i32) - (local $30 i32) - (local $31 i32) + (local $27 i32) + (local $28 i32) (local $k i32) - (local $i|33 i32) + (local $i|30 i32) (local $start i32) - (local $i|35 i32) - (local $start|36 i32) - (local $37 i32) + (local $i|32 i32) + (local $start|33 i32) + (local $34 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store local.get $len i32.const 48 i32.le_s @@ -86978,7 +86896,7 @@ i32.le_s if global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -87010,16 +86928,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $6 - i32.store - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 i32.load call_indirect (type $13) i32.const 0 @@ -87041,16 +86952,9 @@ local.set $b local.get $a local.get $b - global.get $~lib/memory/__stack_pointer i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $8 - i32.store offset=4 - local.get $8 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $8 i32.load call_indirect (type $13) i32.const 0 @@ -87071,41 +86975,34 @@ end local.get $ptr f32.load - local.set $a|9 + local.set $a|7 local.get $ptr f32.load offset=4 - local.set $b|10 - local.get $a|9 - local.get $b|10 - global.get $~lib/memory/__stack_pointer + local.set $b|8 + local.get $a|7 + local.get $b|8 i32.const 2 global.set $~argumentsLength local.get $comparator - local.tee $11 - i32.store offset=8 - local.get $11 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $11 i32.load call_indirect (type $13) i32.const 0 i32.gt_s - local.set $c|12 + local.set $c|9 local.get $ptr - local.get $b|10 - local.get $a|9 - local.get $c|12 + local.get $b|8 + local.get $a|7 + local.get $c|9 select f32.store local.get $ptr - local.get $a|9 - local.get $b|10 - local.get $c|12 + local.get $a|7 + local.get $b|8 + local.get $c|9 select f32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -87117,14 +87014,14 @@ i32.sub i32.const 0 local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return @@ -87188,11 +87085,11 @@ i32.const 0 local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endA local.get $endA @@ -87204,13 +87101,13 @@ i32.lt_s if local.get $hi - local.tee $23 + local.tee $20 i32.const 32 i32.const 1 i32.sub - local.tee $24 - local.get $23 - local.get $24 + local.tee $21 + local.get $20 + local.get $21 i32.lt_s select local.set $endA @@ -87219,11 +87116,11 @@ local.get $endA local.get $lenA local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -87243,11 +87140,11 @@ local.get $startB local.get $hi local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/extendRunRight local.set $endB local.get $endB @@ -87261,15 +87158,15 @@ i32.lt_s if local.get $hi - local.tee $30 + local.tee $27 local.get $startB i32.const 32 i32.add i32.const 1 i32.sub - local.tee $31 - local.get $30 - local.get $31 + local.tee $28 + local.get $27 + local.get $28 i32.lt_s select local.set $endB @@ -87278,11 +87175,11 @@ local.get $endB local.get $lenB local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/insertionSort end i32.const 0 @@ -87293,14 +87190,14 @@ call $~lib/util/sort/nodePower local.set $k local.get $top - local.set $i|33 + local.set $i|30 loop $for-loop|3 - local.get $i|33 + local.get $i|30 local.get $k i32.gt_u if local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -87313,7 +87210,7 @@ local.get $ptr local.get $start local.get $leftRunEndBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add @@ -87323,26 +87220,26 @@ local.get $endA local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns local.get $start local.set $startA local.get $leftRunStartBuf - local.get $i|33 + local.get $i|30 i32.const 2 i32.shl i32.add i32.const -1 i32.store end - local.get $i|33 + local.get $i|30 i32.const 1 i32.sub - local.set $i|33 + local.set $i|30 br $for-loop|3 end end @@ -87370,27 +87267,27 @@ end end local.get $top - local.set $i|35 + local.set $i|32 loop $for-loop|4 - local.get $i|35 + local.get $i|32 i32.const 0 i32.ne if local.get $leftRunStartBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add i32.load - local.set $start|36 - local.get $start|36 + local.set $start|33 + local.get $start|33 i32.const -1 i32.ne if local.get $ptr - local.get $start|36 + local.get $start|33 local.get $leftRunEndBuf - local.get $i|35 + local.get $i|32 i32.const 2 i32.shl i32.add @@ -87400,17 +87297,17 @@ local.get $hi local.get $buffer local.get $comparator - local.set $37 + local.set $34 global.get $~lib/memory/__stack_pointer - local.get $37 - i32.store offset=12 - local.get $37 + local.get $34 + i32.store + local.get $34 call $~lib/util/sort/mergeRuns end - local.get $i|35 + local.get $i|32 i32.const 1 i32.sub - local.set $i|35 + local.set $i|32 br $for-loop|4 end end @@ -87419,7 +87316,7 @@ local.get $leftRunStartBuf call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -92932,209 +92829,6 @@ i32.add global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp f64) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $12) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $12) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - f64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - f64.load - f64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - f64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - f64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $12) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) (func $~lib/rt/__newArray (param $length i32) (param $alignLog2 i32) (param $id i32) (param $data i32) (result i32) (local $bufferSize i32) (local $buffer i32) @@ -94122,1831 +93816,4 @@ local.get $3 return ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - i32.load8_s - local.set $tmp - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - i32.load8_s - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - local.get $tmp - i32.store8 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - i32.load8_u - local.set $tmp - local.get $ptr - local.get $i - i32.const 0 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - i32.load8_u - i32.store8 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 0 - i32.shl - i32.add - local.get $tmp - i32.store8 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u offset=1 - local.get $ptr - local.get $j - i32.const 0 - i32.shl - i32.add - i32.load8_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.set $tmp - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - local.get $tmp - i32.store16 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_s - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.set $tmp - local.get $ptr - local.get $i - i32.const 1 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.store16 - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 1 - i32.shl - i32.add - local.get $tmp - i32.store16 - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u offset=2 - local.get $ptr - local.get $j - i32.const 1 - i32.shl - i32.add - i32.load16_u - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - i32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - i32.load - i32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - i32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - i32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i64) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - i64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - i64.load - i64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - i64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp i64) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $8) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $8) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - i64.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 3 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - i64.load - i64.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 3 - i32.shl - i32.add - local.get $tmp - i64.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load offset=8 - local.get $ptr - local.get $j - i32.const 3 - i32.shl - i32.add - i64.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $8) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) - (func $~lib/util/sort/extendRunRight (param $ptr i32) (param $i i32) (param $right i32) (param $comparator i32) (result i32) - (local $j i32) - (local $5 i32) - (local $6 i32) - (local $k i32) - (local $tmp f32) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $i - local.get $right - i32.eq - if - local.get $i - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - end - local.get $i - local.set $j - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - local.get $ptr - local.get $j - i32.const 1 - i32.add - local.tee $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $5 - i32.store - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $13) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $6 - i32.store offset=4 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $6 - i32.load - call_indirect (type $13) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|0 - end - end - local.get $j - local.set $k - loop $while-continue|1 - local.get $i - local.get $k - i32.lt_s - if - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - f32.load - local.set $tmp - local.get $ptr - local.get $i - i32.const 2 - i32.shl - i32.add - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - f32.load - f32.store - local.get $i - i32.const 1 - i32.add - local.set $i - local.get $ptr - local.get $k - i32.const 2 - i32.shl - i32.add - local.get $tmp - f32.store - local.get $k - i32.const 1 - i32.sub - local.set $k - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $j - local.get $right - i32.lt_s - if (result i32) - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load offset=4 - local.get $ptr - local.get $j - i32.const 2 - i32.shl - i32.add - f32.load - global.get $~lib/memory/__stack_pointer - i32.const 2 - global.set $~argumentsLength - local.get $comparator - local.tee $9 - i32.store offset=8 - local.get $9 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $9 - i32.load - call_indirect (type $13) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $j - i32.const 1 - i32.add - local.set $j - br $while-continue|2 - end - end - end - local.get $j - local.set $10 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $10 - return - ) ) diff --git a/tests/compiler/std/typedarray.release.wat b/tests/compiler/std/typedarray.release.wat index 9dd477c0b8..8dd3afe263 100644 --- a/tests/compiler/std/typedarray.release.wat +++ b/tests/compiler/std/typedarray.release.wat @@ -766,7 +766,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$1433 + block $__inlined_func$~lib/rt/itcms/Object#unlink$1403 local.get $0 i32.load offset=4 i32.const -4 @@ -790,7 +790,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$1433 + br $__inlined_func$~lib/rt/itcms/Object#unlink$1403 end local.get $0 i32.load offset=8 @@ -2259,27 +2259,6 @@ (local $7 i32) (local $8 f64) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -2299,32 +2278,26 @@ local.get $3 select i32.add - local.set $3 + local.set $7 loop $for-loop|0 local.get $2 - local.get $3 + local.get $7 i32.ge_s if local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $3 f64.load offset=8 local.tee $8 local.set $6 - local.get $7 + local.get $3 f64.load local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop local.get $5 local.get $8 local.get $4 @@ -2338,52 +2311,47 @@ local.get $8 local.set $5 end - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $7 + local.set $3 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $9 local.get $8 f64.store offset=16 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add @@ -2391,62 +2359,194 @@ f64.store offset=16 loop $while-continue|2 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - f64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + f64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $10) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $9 local.get $5 f64.store offset=8 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add local.get $6 f64.store offset=8 - local.get $3 + local.get $7 i32.const 2 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) + (local $7 f64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + f64.load offset=8 + local.get $6 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + f64.load + f64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + f64.load offset=8 + local.get $1 + f64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $10) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -2454,44 +2554,26 @@ (local $8 f64) (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $9 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 3 i32.shl local.tee $10 @@ -2506,28 +2588,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $9 - local.get $2 + local.get $6 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add f64.load offset=8 f64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -2537,14 +2619,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add f64.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add @@ -2552,12 +2634,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -2573,10 +2649,10 @@ i32.add local.get $7 f64.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -2585,10 +2661,10 @@ i32.add local.get $8 f64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -2597,10 +2673,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f64) (param $1 f64) (result i32) (local $2 i64) @@ -5351,27 +5423,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -5400,23 +5451,17 @@ local.get $0 local.get $7 i32.add - local.tee $5 + local.tee $3 i32.load8_s offset=1 - local.set $3 - local.get $5 - i32.load8_s local.tee $6 local.set $5 + local.get $3 + i32.load8_s + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -5437,28 +5482,23 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store8 offset=2 @@ -5473,36 +5513,31 @@ local.get $0 local.get $6 i32.add - local.get $5 + local.get $3 i32.store8 offset=2 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.add - local.tee $5 - i32.load8_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store8 offset=1 local.get $6 @@ -5516,7 +5551,7 @@ local.get $0 local.get $6 i32.add - local.get $3 + local.get $5 i32.store8 offset=1 local.get $7 i32.const 2 @@ -5525,57 +5560,163 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (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.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 i32.add - global.set $~lib/memory/__stack_pointer + i32.load8_s + local.get $1 + i32.const 1 + i32.add + local.tee $4 + local.get $0 + i32.add + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_s offset=1 + local.get $5 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_s + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_s offset=1 + local.get $1 + i32.load8_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $7 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 local.get $4 i32.add local.get $0 - local.get $6 + local.get $2 i32.add i32.load8_s i32.store8 @@ -5583,24 +5724,24 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $7 - local.get $2 + local.get $6 i32.sub i32.add local.get $0 - local.get $2 + local.get $6 i32.add i32.load8_s offset=1 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -5609,24 +5750,18 @@ local.get $3 i32.le_s if - local.get $2 local.get $4 + local.get $6 i32.add i32.load8_s local.set $8 + local.get $2 local.get $4 - local.get $6 i32.add i32.load8_s local.set $7 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $8 local.get $7 local.get $5 @@ -5640,20 +5775,20 @@ i32.add local.get $8 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 i32.add local.get $7 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -5662,10 +5797,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -5693,27 +5824,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -5742,23 +5852,17 @@ local.get $0 local.get $7 i32.add - local.tee $5 + local.tee $3 i32.load8_u offset=1 - local.set $3 - local.get $5 - i32.load8_u local.tee $6 local.set $5 + local.get $3 + i32.load8_u + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -5779,28 +5883,23 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.add - local.tee $8 - i32.load8_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.add + local.tee $8 + i32.load8_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store8 offset=2 @@ -5815,36 +5914,31 @@ local.get $0 local.get $6 i32.add - local.get $5 + local.get $3 i32.store8 offset=2 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.add - local.tee $5 - i32.load8_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.add + local.tee $3 + i32.load8_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store8 offset=1 local.get $6 @@ -5858,7 +5952,7 @@ local.get $0 local.get $6 i32.add - local.get $3 + local.get $5 i32.store8 offset=1 local.get $7 i32.const 2 @@ -5867,82 +5961,188 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/extendRunRight (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $1 i32.add - local.set $7 - local.get $2 + i32.load8_u + local.get $1 i32.const 1 i32.add - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 + local.tee $4 + local.get $0 + i32.add + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - i32.add - local.get $0 - local.get $6 - i32.add - i32.load8_u - i32.store8 - br $for-loop|0 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $5 + i32.load8_u offset=1 + local.get $5 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $7 + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - i32.sub + i32.lt_s + if + local.get $0 + local.get $1 + i32.add + local.tee $3 + i32.load8_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.add + local.tee $3 + i32.load8_u + i32.store8 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.add + local.tee $1 + i32.load8_u offset=1 + local.get $1 + i32.load8_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + local.get $4 i32.add local.get $0 local.get $2 i32.add + i32.load8_u + i32.store8 + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.add + local.get $0 + local.get $6 + i32.add i32.load8_u offset=1 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -5951,24 +6151,18 @@ local.get $3 i32.le_s if - local.get $2 local.get $4 + local.get $6 i32.add i32.load8_u local.set $8 + local.get $2 local.get $4 - local.get $6 i32.add i32.load8_u local.set $7 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $8 local.get $7 local.get $5 @@ -5982,20 +6176,20 @@ i32.add local.get $8 i32.store8 - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 i32.add local.get $7 i32.store8 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -6004,10 +6198,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6045,27 +6235,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -6096,23 +6265,17 @@ i32.const 1 i32.shl i32.add - local.tee $5 + local.tee $3 i32.load16_s offset=2 - local.set $3 - local.get $5 - i32.load16_s local.tee $6 local.set $5 + local.get $3 + i32.load16_s + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -6133,30 +6296,25 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_s - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_s + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store16 offset=4 @@ -6173,38 +6331,33 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $3 i32.store16 offset=4 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_s - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store16 offset=2 local.get $6 @@ -6220,7 +6373,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $5 i32.store16 offset=2 local.get $7 i32.const 2 @@ -6229,53 +6382,171 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (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.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load16_s + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_s offset=2 + local.get $5 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_s + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_s offset=2 + local.get $1 + i32.load16_s + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $7 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 1 i32.shl local.tee $8 @@ -6290,28 +6561,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $7 - local.get $2 + local.get $6 i32.sub i32.const 1 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_s offset=2 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -6321,14 +6592,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_s local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add @@ -6336,12 +6607,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -6357,10 +6622,10 @@ i32.add local.get $7 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -6369,10 +6634,10 @@ i32.add local.get $8 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -6381,10 +6646,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6412,27 +6673,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -6463,23 +6703,17 @@ i32.const 1 i32.shl i32.add - local.tee $5 + local.tee $3 i32.load16_u offset=2 - local.set $3 - local.get $5 - i32.load16_u local.tee $6 local.set $5 + local.get $3 + i32.load16_u + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -6500,33 +6734,28 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $8 - i32.load16_u - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - local.get $8 - local.get $9 - i32.store16 offset=4 + block $while-break|1 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $8 + i32.load16_u + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 + local.get $8 + local.get $9 + i32.store16 offset=4 local.get $6 i32.const 1 i32.sub @@ -6540,38 +6769,33 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $3 i32.store16 offset=4 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store16 offset=2 local.get $6 @@ -6587,7 +6811,7 @@ i32.const 1 i32.shl i32.add - local.get $3 + local.get $5 i32.store16 offset=2 local.get $7 i32.const 2 @@ -6596,53 +6820,171 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (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.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 1 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load16_u + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 1 + i32.shl + i32.add + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $5 + i32.load16_u offset=2 + local.get $5 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 1 + i32.shl + i32.add + local.tee $3 + i32.load16_u + i32.store16 + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store16 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 1 + i32.shl + i32.add + local.tee $1 + i32.load16_u offset=2 + local.get $1 + i32.load16_u + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $7 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 1 i32.shl local.tee $8 @@ -6657,28 +6999,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $7 - local.get $2 + local.get $6 i32.sub i32.const 1 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_u offset=2 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -6688,14 +7030,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 1 i32.shl i32.add i32.load16_u local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 1 i32.shl i32.add @@ -6703,12 +7045,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -6724,10 +7060,10 @@ i32.add local.get $7 i32.store16 - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -6736,10 +7072,10 @@ i32.add local.get $8 i32.store16 - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -6748,10 +7084,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -6789,27 +7121,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -6840,23 +7151,17 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $3 i32.load offset=4 - local.set $3 - local.get $5 - i32.load local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -6877,30 +7182,25 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store offset=8 @@ -6917,38 +7217,33 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -6964,7 +7259,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=4 local.get $7 i32.const 2 @@ -6973,106 +7268,224 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/extendRunRight (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) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - local.set $7 - local.get $2 + i32.load + local.get $0 + local.get $1 i32.const 1 i32.add - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.const 2 - i32.shl - local.tee $8 + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 local.get $4 - i32.add - local.get $0 - local.get $8 - i32.add - i32.load - i32.store - br $for-loop|0 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s - if - local.get $4 - local.get $7 - local.get $2 - i32.sub - i32.const 2 - i32.shl - i32.add - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - i32.store + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|1 - end - end - loop $for-loop|2 - local.get $1 - local.get $3 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $7 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 2 + i32.shl + local.tee $8 + local.get $4 + i32.add + local.get $0 + local.get $8 + i32.add + i32.load + i32.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s + if + local.get $4 + local.get $7 + local.get $6 + i32.sub + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.store + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $for-loop|1 + end + end + loop $for-loop|2 + local.get $1 + local.get $3 i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add @@ -7080,12 +7493,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -7101,10 +7508,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -7113,10 +7520,10 @@ i32.add local.get $8 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -7125,10 +7532,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -7150,27 +7553,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -7201,23 +7583,17 @@ i32.const 2 i32.shl i32.add - local.tee $5 + local.tee $3 i32.load offset=4 - local.set $3 - local.get $5 - i32.load local.tee $6 local.set $5 + local.get $3 + i32.load + local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $6 local.get $3 + local.get $6 local.get $4 i32.load call_indirect (type $0) @@ -7238,30 +7614,25 @@ local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $8 - i32.load - local.set $9 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $9 - local.get $5 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $8 + i32.load + local.set $9 + i32.const 2 + global.set $~argumentsLength + local.get $9 + local.get $3 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $8 local.get $9 i32.store offset=8 @@ -7278,38 +7649,33 @@ i32.const 2 i32.shl i32.add - local.get $5 + local.get $3 i32.store offset=8 loop $while-continue|2 local.get $1 local.get $6 i32.le_s if - local.get $0 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $3 - local.get $4 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 local.get $5 + local.get $4 + i32.load + call_indirect (type $0) + i32.const 0 + i32.le_s + br_if $while-break|2 + local.get $3 local.get $8 i32.store offset=4 local.get $6 @@ -7325,7 +7691,7 @@ i32.const 2 i32.shl i32.add - local.get $3 + local.get $5 i32.store offset=4 local.get $7 i32.const 2 @@ -7334,53 +7700,171 @@ br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (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.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $5 + i32.load offset=4 + local.get $5 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + i32.load + i32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + i32.load offset=4 + local.get $1 + i32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $0) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) (local $7 i32) (local $8 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $7 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 2 i32.shl local.tee $8 @@ -7395,28 +7879,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $7 - local.get $2 + local.get $6 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add i32.load offset=4 i32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -7426,14 +7910,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add i32.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add @@ -7441,12 +7925,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -7462,10 +7940,10 @@ i32.add local.get $7 i32.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -7474,10 +7952,10 @@ i32.add local.get $8 i32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -7486,10 +7964,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i32) (param $1 i32) (result i32) local.get $0 @@ -7515,27 +7989,6 @@ (local $7 i32) (local $8 i64) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -7555,34 +8008,28 @@ local.get $3 select i32.add - local.set $3 + local.set $7 loop $for-loop|0 local.get $2 - local.get $3 + local.get $7 i32.ge_s if local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $3 i64.load offset=8 local.tee $8 local.set $6 - local.get $7 + local.get $3 i64.load local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $8 + local.get $5 + local.get $8 local.get $4 i32.load call_indirect (type $7) @@ -7594,52 +8041,47 @@ local.get $8 local.set $5 end - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $7 + local.set $3 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $9 local.get $8 i64.store offset=16 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add @@ -7647,62 +8089,194 @@ i64.store offset=16 loop $while-continue|2 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $9 local.get $5 i64.store offset=8 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add local.get $6 i64.store offset=8 - local.get $3 + local.get $7 i32.const 2 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) + (local $6 i32) + (local $7 i64) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + i64.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -7710,44 +8284,26 @@ (local $8 i64) (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $9 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 3 i32.shl local.tee $10 @@ -7762,28 +8318,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $9 - local.get $2 + local.get $6 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add i64.load offset=8 i64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -7793,14 +8349,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add i64.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add @@ -7808,12 +8364,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -7829,10 +8379,10 @@ i32.add local.get $7 i64.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -7841,10 +8391,10 @@ i32.add local.get $8 i64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -7853,10 +8403,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -7882,27 +8428,6 @@ (local $7 i32) (local $8 i64) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -7922,32 +8447,26 @@ local.get $3 select i32.add - local.set $3 + local.set $7 loop $for-loop|0 local.get $2 - local.get $3 + local.get $7 i32.ge_s if local.get $0 - local.get $3 + local.get $7 i32.const 3 i32.shl i32.add - local.tee $7 + local.tee $3 i64.load offset=8 local.tee $8 local.set $6 - local.get $7 + local.get $3 i64.load local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop local.get $5 local.get $8 local.get $4 @@ -7961,52 +8480,47 @@ local.get $8 local.set $5 end - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $7 + local.set $3 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $9 local.get $8 i64.store offset=16 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add @@ -8014,143 +8528,257 @@ i64.store offset=16 loop $while-continue|2 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 3 - i32.shl - i32.add - local.tee $9 - i64.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 3 + i32.shl + i32.add + local.tee $9 + i64.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $7) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $9 local.get $5 i64.store offset=8 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $7 + local.get $3 i32.const 3 i32.shl i32.add local.get $6 i64.store offset=8 - local.get $3 + local.get $7 i32.const 2 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer ) - (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i64) - (local $8 i64) - (local $9 i32) - (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s + local.get $1 + local.get $2 + i32.eq if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + local.get $1 + return end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 + local.get $0 + local.get $1 + i32.const 3 + i32.shl i32.add - local.set $9 - local.get $2 + i64.load + local.get $0 + local.get $1 i32.const 1 i32.add - local.set $6 - loop $for-loop|0 - local.get $1 - local.get $6 - i32.lt_s - if - local.get $6 - i32.const 1 - i32.sub - local.tee $6 - i32.const 3 - i32.shl - local.tee $10 - local.get $4 - i32.add - local.get $0 - local.get $10 - i32.add - i64.load - i64.store - br $for-loop|0 - end - end - loop $for-loop|1 - local.get $2 - local.get $3 - i32.lt_s + local.tee $4 + i32.const 3 + i32.shl + i32.add + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $6 + i64.load offset=8 + local.get $6 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + local.tee $3 + i64.load + i64.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + i64.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 3 + i32.shl + i32.add + local.tee $1 + i64.load offset=8 + local.get $1 + i64.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $7) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 + ) + (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) + (local $6 i32) + (local $7 i64) + (local $8 i64) + (local $9 i32) + (local $10 i32) + local.get $2 + i32.const 1 + i32.sub + local.tee $6 + local.get $3 + i32.add + local.set $9 + local.get $6 + i32.const 1 + i32.add + local.set $2 + loop $for-loop|0 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.const 3 + i32.shl + local.tee $10 + local.get $4 + i32.add + local.get $0 + local.get $10 + i32.add + i64.load + i64.store + br $for-loop|0 + end + end + loop $for-loop|1 + local.get $3 + local.get $6 + i32.gt_s if local.get $4 local.get $9 - local.get $2 + local.get $6 i32.sub i32.const 3 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add i64.load offset=8 i64.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -8160,14 +8788,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 3 i32.shl i32.add i64.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 3 i32.shl i32.add @@ -8175,12 +8803,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -8196,10 +8818,10 @@ i32.add local.get $7 i64.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -8208,10 +8830,10 @@ i32.add local.get $8 i64.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -8220,10 +8842,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 i64) (param $1 i64) (result i32) local.get $0 @@ -8249,27 +8867,6 @@ (local $7 i32) (local $8 f32) (local $9 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 local.get $1 local.get $3 local.get $2 @@ -8289,32 +8886,26 @@ local.get $3 select i32.add - local.set $3 + local.set $7 loop $for-loop|0 local.get $2 - local.get $3 + local.get $7 i32.ge_s if local.get $0 - local.get $3 + local.get $7 i32.const 2 i32.shl i32.add - local.tee $7 + local.tee $3 f32.load offset=4 local.tee $8 local.set $6 - local.get $7 + local.get $3 f32.load local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - i32.load offset=4 - drop local.get $5 local.get $8 local.get $4 @@ -8328,52 +8919,47 @@ local.get $8 local.set $5 end - local.get $3 + local.get $7 i32.const 1 i32.sub - local.set $7 + local.set $3 loop $while-continue|1 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $8 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.load offset=4 - drop - local.get $8 - local.get $5 - local.get $4 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $8 + i32.const 2 + global.set $~argumentsLength + local.get $8 + local.get $5 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|1 local.get $9 local.get $8 f32.store offset=8 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|1 end end end local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add @@ -8381,62 +8967,194 @@ f32.store offset=8 loop $while-continue|2 local.get $1 - local.get $7 + local.get $3 i32.le_s if - local.get $0 - local.get $7 - i32.const 2 - i32.shl - i32.add - local.tee $9 - f32.load - local.set $5 - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - drop - local.get $5 - local.get $6 - local.get $4 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if + block $while-break|2 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.tee $9 + f32.load + local.set $5 + i32.const 2 + global.set $~argumentsLength + local.get $5 + local.get $6 + local.get $4 + i32.load + call_indirect (type $11) + i32.const 0 + i32.le_s + br_if $while-break|2 local.get $9 local.get $5 f32.store offset=4 - local.get $7 + local.get $3 i32.const 1 i32.sub - local.set $7 + local.set $3 br $while-continue|2 end end end local.get $0 - local.get $7 + local.get $3 i32.const 2 i32.shl i32.add local.get $6 f32.store offset=4 - local.get $3 + local.get $7 i32.const 2 i32.add - local.set $3 + local.set $7 br $for-loop|0 end end - global.get $~lib/memory/__stack_pointer - i32.const 12 + ) + (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) + (local $7 f32) + local.get $1 + local.get $2 + i32.eq + if + local.get $1 + return + end + local.get $0 + local.get $1 + i32.const 2 + i32.shl i32.add - global.set $~lib/memory/__stack_pointer + f32.load + local.get $0 + local.get $1 + i32.const 1 + i32.add + local.tee $4 + i32.const 2 + i32.shl + i32.add + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.gt_s + if + loop $while-continue|0 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $6 + f32.load offset=4 + local.get $6 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 31 + i32.shr_u + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|0 + end + end + local.get $4 + local.set $2 + loop $while-continue|1 + local.get $1 + local.get $2 + i32.lt_s + if + local.get $0 + local.get $1 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + local.set $5 + local.get $3 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + local.tee $3 + f32.load + f32.store + local.get $1 + i32.const 1 + i32.add + local.set $1 + local.get $3 + local.get $5 + f32.store + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|1 + end + end + else + loop $while-continue|2 + local.get $2 + local.get $4 + i32.gt_s + if (result i32) + local.get $0 + local.get $4 + i32.const 2 + i32.shl + i32.add + local.tee $1 + f32.load offset=4 + local.get $1 + f32.load + i32.const 2 + global.set $~argumentsLength + local.get $3 + i32.load + call_indirect (type $11) + i32.const 0 + i32.ge_s + else + i32.const 0 + end + if + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end + end + end + local.get $4 ) (func $~lib/util/sort/mergeRuns (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (param $4 i32) (param $5 i32) (local $6 i32) @@ -8444,44 +9162,26 @@ (local $8 f32) (local $9 i32) (local $10 i32) - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - local.get $3 local.get $2 i32.const 1 i32.sub - local.tee $2 + local.tee $6 + local.get $3 i32.add local.set $9 - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $6 + local.set $2 loop $for-loop|0 local.get $1 - local.get $6 + local.get $2 i32.lt_s if - local.get $6 + local.get $2 i32.const 1 i32.sub - local.tee $6 + local.tee $2 i32.const 2 i32.shl local.tee $10 @@ -8496,28 +9196,28 @@ end end loop $for-loop|1 - local.get $2 local.get $3 - i32.lt_s + local.get $6 + i32.gt_s if local.get $4 local.get $9 - local.get $2 + local.get $6 i32.sub i32.const 2 i32.shl i32.add local.get $0 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add f32.load offset=4 f32.store - local.get $2 + local.get $6 i32.const 1 i32.add - local.set $2 + local.set $6 br $for-loop|1 end end @@ -8527,14 +9227,14 @@ i32.le_s if local.get $4 - local.get $2 + local.get $6 i32.const 2 i32.shl i32.add f32.load local.set $7 local.get $4 - local.get $6 + local.get $2 i32.const 2 i32.shl i32.add @@ -8542,12 +9242,6 @@ local.set $8 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store - local.get $5 - i32.load offset=4 - drop local.get $7 local.get $8 local.get $5 @@ -8563,10 +9257,10 @@ i32.add local.get $7 f32.store - local.get $2 + local.get $6 i32.const 1 i32.sub - local.set $2 + local.set $6 else local.get $0 local.get $1 @@ -8575,10 +9269,10 @@ i32.add local.get $8 f32.store - local.get $6 + local.get $2 i32.const 1 i32.add - local.set $6 + local.set $2 end local.get $1 i32.const 1 @@ -8587,10 +9281,6 @@ br $for-loop|2 end end - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~lib/util/sort/COMPARATOR~anonymous|0 (param $0 f32) (param $1 f32) (result i32) (local $2 i32) @@ -10435,7 +11125,7 @@ (local $17 f64) (local $18 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -10450,11 +11140,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -10484,12 +11171,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -10508,12 +11189,6 @@ local.set $18 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $18 local.get $9 @@ -10546,12 +11221,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -10575,7 +11244,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -10645,7 +11314,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -10663,7 +11332,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -10688,7 +11357,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -10708,7 +11377,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $10 @@ -10777,7 +11446,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -10843,7 +11512,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -10864,13 +11533,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -11673,7 +12342,7 @@ i32.lt_s select local.set $0 - block $__inlined_func$~lib/util/bytes/FILL$222 + block $__inlined_func$~lib/util/bytes/FILL$202 local.get $1 i32.eqz local.get $1 @@ -11698,7 +12367,7 @@ i32.shl memory.fill end - br $__inlined_func$~lib/util/bytes/FILL$222 + br $__inlined_func$~lib/util/bytes/FILL$202 end loop $for-loop|0 local.get $0 @@ -12300,7 +12969,7 @@ (local $5 i32) (local $6 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -12318,8 +12987,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -12353,12 +13022,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $3 local.get $6 local.get $2 @@ -12375,7 +13038,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -13361,7 +14024,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13379,8 +14042,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -13416,12 +14079,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $3 local.get $5 local.get $2 @@ -13438,7 +14095,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -13501,7 +14158,7 @@ i32.const 3600 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13510,7 +14167,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -13557,12 +14214,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3600 - i32.store offset=20 - i32.const 3604 - i32.load - drop local.get $2 local.get $3 i32.add @@ -13593,7 +14244,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -13764,7 +14415,7 @@ i32.const 3632 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13773,7 +14424,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -13820,12 +14471,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3632 - i32.store offset=20 - i32.const 3636 - i32.load - drop local.get $2 local.get $3 i32.add @@ -13856,7 +14501,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -13980,7 +14625,7 @@ i32.const 3664 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -13989,7 +14634,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14036,12 +14681,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3664 - i32.store offset=20 - i32.const 3668 - i32.load - drop local.get $2 local.get $3 i32.add @@ -14072,7 +14711,7 @@ local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14249,7 +14888,7 @@ i32.const 3696 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14258,7 +14897,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14311,12 +14950,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3696 - i32.store offset=20 - i32.const 3700 - i32.load - drop local.get $2 local.get $8 i32.add @@ -14347,7 +14980,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14524,7 +15157,7 @@ i32.const 3728 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14533,7 +15166,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14586,12 +15219,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3728 - i32.store offset=20 - i32.const 3732 - i32.load - drop local.get $2 local.get $8 i32.add @@ -14622,7 +15249,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -14748,7 +15375,7 @@ i32.const 3760 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -14757,7 +15384,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -14810,12 +15437,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3760 - i32.store offset=20 - i32.const 3764 - i32.load - drop local.get $2 local.get $8 i32.add @@ -14846,7 +15467,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15023,7 +15644,7 @@ i32.const 3792 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15032,7 +15653,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15085,12 +15706,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3792 - i32.store offset=20 - i32.const 3796 - i32.load - drop local.get $2 local.get $8 i32.add @@ -15121,7 +15736,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15299,7 +15914,7 @@ i32.const 3824 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15308,7 +15923,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15361,12 +15976,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3824 - i32.store offset=20 - i32.const 3828 - i32.load - drop local.get $2 local.get $8 i32.add @@ -15397,7 +16006,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15575,7 +16184,7 @@ i32.const 3856 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15584,7 +16193,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15637,12 +16246,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3856 - i32.store offset=20 - i32.const 3860 - i32.load - drop local.get $2 local.get $8 i32.add @@ -15673,7 +16276,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -15851,7 +16454,7 @@ i32.const 3888 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -15860,7 +16463,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -15913,12 +16516,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3888 - i32.store offset=20 - i32.const 3892 - i32.load - drop local.get $2 local.get $8 i32.add @@ -15949,7 +16546,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16075,7 +16672,7 @@ i32.const 3920 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16084,7 +16681,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $0 @@ -16137,12 +16734,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3920 - i32.store offset=20 - i32.const 3924 - i32.load - drop local.get $2 local.get $8 i32.add @@ -16173,7 +16764,7 @@ local.get $7 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16312,7 +16903,7 @@ i32.const 3952 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16321,7 +16912,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -16368,12 +16959,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3952 - i32.store offset=20 - i32.const 3956 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -16414,7 +16999,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16581,7 +17166,7 @@ i32.const 3984 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16590,7 +17175,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -16637,12 +17222,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3984 - i32.store offset=20 - i32.const 3988 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -16683,7 +17262,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -16850,7 +17429,7 @@ i32.const 4016 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -16859,7 +17438,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -16906,12 +17485,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4016 - i32.store offset=20 - i32.const 4020 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -16952,7 +17525,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17119,7 +17692,7 @@ i32.const 4048 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17128,7 +17701,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17179,12 +17752,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4048 - i32.store offset=20 - i32.const 4052 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -17230,7 +17797,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17397,7 +17964,7 @@ i32.const 4080 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17406,7 +17973,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17457,12 +18024,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4080 - i32.store offset=20 - i32.const 4084 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -17508,7 +18069,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17675,7 +18236,7 @@ i32.const 4112 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17684,7 +18245,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -17735,12 +18296,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4112 - i32.store offset=20 - i32.const 4116 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -17786,7 +18341,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -17953,7 +18508,7 @@ i32.const 4144 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -17962,7 +18517,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18013,12 +18568,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4144 - i32.store offset=20 - i32.const 4148 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -18064,7 +18613,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18231,7 +18780,7 @@ i32.const 4176 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18240,7 +18789,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18291,12 +18840,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4176 - i32.store offset=20 - i32.const 4180 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -18342,7 +18885,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18509,7 +19052,7 @@ i32.const 4208 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18518,7 +19061,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18569,12 +19112,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4208 - i32.store offset=20 - i32.const 4212 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -18620,7 +19157,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -18787,7 +19324,7 @@ i32.const 4240 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -18796,7 +19333,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -18847,12 +19384,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4240 - i32.store offset=20 - i32.const 4244 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -18898,7 +19429,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19065,7 +19596,7 @@ i32.const 4272 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19074,7 +19605,7 @@ br_if $folding-inner0 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 20 memory.fill global.get $~lib/memory/__stack_pointer local.get $8 @@ -19125,12 +19656,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 4272 - i32.store offset=20 - i32.const 4276 - i32.load - drop local.get $5 local.get $2 local.get $8 @@ -19176,7 +19701,7 @@ local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 20 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -19276,7 +19801,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19294,8 +19819,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19330,12 +19855,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19355,7 +19874,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19365,7 +19884,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19383,8 +19902,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19419,12 +19938,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19444,7 +19957,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19454,7 +19967,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19472,8 +19985,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19510,12 +20023,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19535,7 +20042,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19545,7 +20052,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19563,8 +20070,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19601,12 +20108,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19626,7 +20127,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19636,7 +20137,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19654,8 +20155,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19692,12 +20193,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19717,7 +20212,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19727,7 +20222,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19745,8 +20240,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19783,12 +20278,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19808,7 +20297,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19818,7 +20307,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19836,8 +20325,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19874,12 +20363,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19899,7 +20382,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -19909,7 +20392,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -19927,8 +20410,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -19965,12 +20448,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -19990,7 +20467,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20000,7 +20477,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20018,8 +20495,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20056,12 +20533,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -20081,7 +20552,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20091,7 +20562,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20109,8 +20580,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -20147,12 +20618,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 1 local.get $5 local.get $2 @@ -20172,7 +20637,7 @@ i32.const 0 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -20182,7 +20647,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20200,8 +20665,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20235,12 +20700,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20258,7 +20717,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20269,7 +20728,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20287,8 +20746,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20322,12 +20781,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20345,7 +20798,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20356,7 +20809,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20374,8 +20827,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20411,12 +20864,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20434,7 +20881,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20445,7 +20892,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20463,8 +20910,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20500,12 +20947,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20523,7 +20964,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20534,7 +20975,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20552,8 +20993,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20589,12 +21030,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20612,7 +21047,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20623,7 +21058,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20641,8 +21076,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20678,12 +21113,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20701,7 +21130,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20712,7 +21141,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20730,8 +21159,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20767,12 +21196,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20790,7 +21213,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20801,7 +21224,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20819,8 +21242,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20856,12 +21279,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20879,7 +21296,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20890,7 +21307,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20908,8 +21325,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -20945,12 +21362,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -20968,7 +21379,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -20979,7 +21390,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -20997,8 +21408,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21034,12 +21445,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21057,7 +21462,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21067,7 +21472,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21085,8 +21490,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21122,12 +21527,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21145,7 +21544,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21155,7 +21554,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21173,8 +21572,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21210,12 +21609,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21233,7 +21626,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21243,7 +21636,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21261,8 +21654,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21300,12 +21693,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21323,7 +21710,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21333,7 +21720,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21351,8 +21738,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21390,12 +21777,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21413,7 +21794,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21423,7 +21804,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21441,8 +21822,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21480,12 +21861,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21503,7 +21878,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21513,7 +21888,7 @@ (local $3 i32) (local $4 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21531,8 +21906,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21570,12 +21945,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21593,7 +21962,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21603,7 +21972,7 @@ (local $3 i32) (local $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21621,8 +21990,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21660,12 +22029,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21683,7 +22046,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21693,7 +22056,7 @@ (local $3 i32) (local $4 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21711,8 +22074,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21750,12 +22113,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21773,7 +22130,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21783,7 +22140,7 @@ (local $3 i32) (local $4 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21801,8 +22158,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21840,12 +22197,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21863,7 +22214,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21873,7 +22224,7 @@ (local $3 i32) (local $4 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21891,8 +22242,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -21930,12 +22281,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -21953,7 +22298,7 @@ local.set $2 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $2 @@ -21964,7 +22309,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -21982,8 +22327,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22018,12 +22363,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22044,7 +22383,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22054,7 +22393,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22072,8 +22411,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22108,12 +22447,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22134,7 +22467,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22144,7 +22477,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22162,8 +22495,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22200,12 +22533,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22226,7 +22553,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22236,7 +22563,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22254,8 +22581,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22292,12 +22619,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22318,7 +22639,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22328,7 +22649,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22346,8 +22667,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22384,12 +22705,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22410,7 +22725,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22420,7 +22735,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22438,8 +22753,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22476,12 +22791,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22502,7 +22811,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22512,7 +22821,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22530,8 +22839,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22568,12 +22877,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22594,7 +22897,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22604,7 +22907,7 @@ (local $4 i32) (local $5 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22622,8 +22925,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22660,12 +22963,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22686,7 +22983,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22696,7 +22993,7 @@ (local $4 i32) (local $5 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22714,8 +23011,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22752,12 +23049,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22778,7 +23069,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22788,7 +23079,7 @@ (local $4 i32) (local $5 f64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22806,8 +23097,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 block $"~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0" (result i32) global.get $~lib/memory/__stack_pointer local.get $0 @@ -22844,12 +23135,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop i32.const 0 local.get $5 local.get $2 @@ -22870,7 +23155,7 @@ i32.const 1 end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -22950,7 +23235,7 @@ (local $4 i32) (local $5 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -22968,8 +23253,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 i32.store @@ -23002,12 +23287,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop local.get $2 local.get $0 local.get $1 @@ -23021,7 +23300,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer ) @@ -35027,7 +35306,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1438 + block $__inlined_func$~lib/util/string/joinIntegerArray$1408 local.get $0 i32.const 1 i32.sub @@ -35041,7 +35320,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1438 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 end local.get $6 i32.eqz @@ -35054,7 +35333,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1438 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35147,7 +35426,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1438 + br $__inlined_func$~lib/util/string/joinIntegerArray$1408 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35281,7 +35560,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$734 + block $__inlined_func$~lib/util/string/compareImpl$714 loop $while-continue|1 local.get $0 local.tee $3 @@ -35301,7 +35580,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$734 + br_if $__inlined_func$~lib/util/string/compareImpl$714 local.get $2 i32.const 2 i32.add @@ -35375,7 +35654,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1439 + block $__inlined_func$~lib/util/string/joinIntegerArray$1409 local.get $0 i32.const 1 i32.sub @@ -35389,7 +35668,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1439 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 end local.get $6 i32.eqz @@ -35402,7 +35681,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1439 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35495,7 +35774,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1439 + br $__inlined_func$~lib/util/string/joinIntegerArray$1409 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35590,7 +35869,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1440 + block $__inlined_func$~lib/util/string/joinIntegerArray$1410 local.get $0 i32.const 1 i32.sub @@ -35604,7 +35883,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1440 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 end local.get $6 i32.eqz @@ -35617,7 +35896,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1440 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35714,7 +35993,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1440 + br $__inlined_func$~lib/util/string/joinIntegerArray$1410 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35780,7 +36059,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1441 + block $__inlined_func$~lib/util/string/joinIntegerArray$1411 local.get $0 i32.const 1 i32.sub @@ -35794,7 +36073,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1441 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 end local.get $6 i32.eqz @@ -35807,7 +36086,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1441 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -35904,7 +36183,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1441 + br $__inlined_func$~lib/util/string/joinIntegerArray$1411 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -35970,7 +36249,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1442 + block $__inlined_func$~lib/util/string/joinIntegerArray$1412 local.get $0 i32.const 1 i32.sub @@ -35984,7 +36263,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1442 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 end local.get $6 i32.eqz @@ -35997,7 +36276,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1442 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -36094,7 +36373,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1442 + br $__inlined_func$~lib/util/string/joinIntegerArray$1412 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36160,7 +36439,7 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - block $__inlined_func$~lib/util/string/joinIntegerArray$1443 + block $__inlined_func$~lib/util/string/joinIntegerArray$1413 local.get $0 i32.const 1 i32.sub @@ -36174,7 +36453,7 @@ global.set $~lib/memory/__stack_pointer i32.const 7776 local.set $0 - br $__inlined_func$~lib/util/string/joinIntegerArray$1443 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 end local.get $6 i32.eqz @@ -36187,7 +36466,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1443 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 end global.get $~lib/memory/__stack_pointer i32.const 9584 @@ -36284,7 +36563,7 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - br $__inlined_func$~lib/util/string/joinIntegerArray$1443 + br $__inlined_func$~lib/util/string/joinIntegerArray$1413 end global.get $~lib/memory/__stack_pointer i32.const 8 @@ -36729,7 +37008,7 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - block $__inlined_func$~lib/util/number/utoa64$769 + block $__inlined_func$~lib/util/number/utoa64$749 local.get $3 i64.eqz if @@ -36739,7 +37018,7 @@ global.set $~lib/memory/__stack_pointer i32.const 8000 local.set $1 - br $__inlined_func$~lib/util/number/utoa64$769 + br $__inlined_func$~lib/util/number/utoa64$749 end local.get $3 i64.const 4294967295 @@ -48946,7 +49225,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -48961,11 +49240,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -48995,12 +49271,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -49019,12 +49289,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -49057,12 +49321,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -49086,7 +49344,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -49154,7 +49412,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -49172,7 +49430,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -49197,7 +49455,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -49217,7 +49475,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -49286,7 +49544,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -49352,7 +49610,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -49373,13 +49631,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -49440,7 +49698,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49455,11 +49713,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -49489,12 +49744,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -49513,12 +49762,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -49551,12 +49794,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -49580,7 +49817,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -49648,7 +49885,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -49666,7 +49903,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -49691,7 +49928,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -49711,7 +49948,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -49780,7 +50017,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -49846,7 +50083,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -49867,13 +50104,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -49934,7 +50171,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -49949,11 +50186,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -49983,12 +50217,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -50007,12 +50235,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -50045,12 +50267,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -50074,7 +50290,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -50144,7 +50360,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -50162,7 +50378,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -50187,7 +50403,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -50207,7 +50423,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -50276,7 +50492,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -50342,7 +50558,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -50363,13 +50579,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -50430,7 +50646,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50445,11 +50661,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -50479,12 +50692,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -50503,12 +50710,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -50541,12 +50742,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -50570,7 +50765,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -50640,7 +50835,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -50658,7 +50853,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -50683,7 +50878,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -50703,7 +50898,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -50772,7 +50967,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -50838,7 +51033,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -50859,13 +51054,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -50926,7 +51121,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -50941,11 +51136,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -50975,12 +51167,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -50999,12 +51185,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -51037,12 +51217,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -51066,7 +51240,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -51136,7 +51310,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -51154,7 +51328,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -51179,7 +51353,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -51199,7 +51373,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -51268,7 +51442,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -51334,7 +51508,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -51355,13 +51529,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -51422,7 +51596,7 @@ (local $14 i32) (local $15 i32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -51437,11 +51611,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -51471,12 +51642,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -51495,12 +51660,6 @@ local.set $5 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $5 local.get $1 @@ -51533,12 +51692,6 @@ local.set $3 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $3 local.get $1 @@ -51562,7 +51715,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -51632,7 +51785,7 @@ local.set $12 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -51650,7 +51803,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -51675,7 +51828,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -51695,7 +51848,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $9 @@ -51764,7 +51917,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -51830,7 +51983,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -51851,13 +52004,13 @@ local.get $10 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -51920,7 +52073,7 @@ (local $16 i64) (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -51935,11 +52088,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -51969,12 +52119,6 @@ local.set $16 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $16 local.get $9 @@ -51993,12 +52137,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -52031,12 +52169,6 @@ local.set $16 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $16 local.get $9 @@ -52060,7 +52192,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -52130,7 +52262,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -52148,7 +52280,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -52173,7 +52305,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -52193,7 +52325,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $10 @@ -52262,7 +52394,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -52328,7 +52460,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -52349,13 +52481,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -52418,7 +52550,7 @@ (local $16 i64) (local $17 i64) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -52433,11 +52565,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -52467,12 +52596,6 @@ local.set $16 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $16 local.get $9 @@ -52491,12 +52614,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -52529,12 +52646,6 @@ local.set $16 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $16 local.get $9 @@ -52558,7 +52669,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -52628,7 +52739,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -52646,7 +52757,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -52671,7 +52782,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -52691,7 +52802,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $10 @@ -52760,7 +52871,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -52826,7 +52937,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -52847,13 +52958,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -52917,7 +53028,7 @@ (local $17 f32) (local $18 f32) global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -52932,11 +53043,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store block $folding-inner0 local.get $1 i32.const 48 @@ -52966,12 +53074,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -52990,12 +53092,6 @@ local.set $18 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $18 local.get $9 @@ -53028,12 +53124,6 @@ local.set $17 i32.const 2 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 - local.get $2 - i32.load offset=4 - drop local.get $0 local.get $17 local.get $9 @@ -53057,7 +53147,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -53127,7 +53217,7 @@ local.set $13 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 local.get $1 @@ -53145,7 +53235,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 i32.const 0 i32.const 31 @@ -53170,7 +53260,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 i32.const 1 @@ -53190,7 +53280,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $6 local.get $10 @@ -53259,7 +53349,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $8 local.get $3 @@ -53325,7 +53415,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=12 + i32.store local.get $0 local.get $4 local.get $3 @@ -53346,13 +53436,13 @@ local.get $11 call $~lib/rt/tlsf/__free global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer return end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) @@ -55745,7 +55835,7 @@ i32.const 2896 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -55756,8 +55846,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -55791,12 +55881,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2896 - i32.store offset=12 - i32.const 2900 - i32.load - drop local.get $1 local.get $9 local.get $0 @@ -55813,7 +55897,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -55991,7 +56075,7 @@ i32.const 2992 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56002,8 +56086,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56041,12 +56125,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 2992 - i32.store offset=12 - i32.const 2996 - i32.load - drop local.get $1 local.get $9 local.get $0 @@ -56063,7 +56141,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56125,7 +56203,7 @@ i32.const 3024 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56136,8 +56214,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56175,12 +56253,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3024 - i32.store offset=12 - i32.const 3028 - i32.load - drop local.get $1 local.get $9 local.get $0 @@ -56197,7 +56269,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56259,7 +56331,7 @@ i32.const 3056 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56270,8 +56342,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56309,12 +56381,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3056 - i32.store offset=12 - i32.const 3060 - i32.load - drop local.get $1 local.get $9 local.get $0 @@ -56331,7 +56397,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56391,7 +56457,7 @@ i32.const 3088 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56402,8 +56468,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -56441,12 +56507,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3088 - i32.store offset=12 - i32.const 3092 - i32.load - drop local.get $1 local.get $9 local.get $0 @@ -56463,7 +56523,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -56523,7 +56583,7 @@ i32.const 3120 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56534,8 +56594,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56571,12 +56631,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3120 - i32.store offset=12 - i32.const 3124 - i32.load - drop local.get $3 local.get $10 local.get $0 @@ -56593,7 +56647,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -56655,7 +56709,7 @@ i32.const 3152 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56666,8 +56720,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56703,12 +56757,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3152 - i32.store offset=12 - i32.const 3156 - i32.load - drop local.get $3 local.get $10 local.get $0 @@ -56725,7 +56773,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -56785,7 +56833,7 @@ i32.const 3184 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56796,8 +56844,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56833,12 +56881,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3184 - i32.store offset=12 - i32.const 3188 - i32.load - drop local.get $4 local.get $11 local.get $0 @@ -56855,7 +56897,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -56915,7 +56957,7 @@ i32.const 3216 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -56926,8 +56968,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -56963,12 +57005,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3216 - i32.store offset=12 - i32.const 3220 - i32.load - drop local.get $5 local.get $12 local.get $0 @@ -56985,7 +57021,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $5 @@ -57791,7 +57827,7 @@ i32.const 3248 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -57802,8 +57838,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -57841,12 +57877,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3248 - i32.store offset=12 - i32.const 3252 - i32.load - drop local.get $1 local.get $8 local.get $0 @@ -57863,7 +57893,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58039,7 +58069,7 @@ i32.const 3344 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58050,8 +58080,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58091,12 +58121,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3344 - i32.store offset=12 - i32.const 3348 - i32.load - drop local.get $1 local.get $8 local.get $0 @@ -58113,7 +58137,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58173,7 +58197,7 @@ i32.const 3376 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58184,8 +58208,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58225,12 +58249,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3376 - i32.store offset=12 - i32.const 3380 - i32.load - drop local.get $1 local.get $8 local.get $0 @@ -58247,7 +58265,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58307,7 +58325,7 @@ i32.const 3408 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58318,8 +58336,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58359,12 +58377,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3408 - i32.store offset=12 - i32.const 3412 - i32.load - drop local.get $1 local.get $8 local.get $0 @@ -58381,7 +58393,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58439,7 +58451,7 @@ i32.const 3440 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58450,8 +58462,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $6 i32.store @@ -58491,12 +58503,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3440 - i32.store offset=12 - i32.const 3444 - i32.load - drop local.get $1 local.get $8 local.get $0 @@ -58513,7 +58519,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $1 @@ -58573,7 +58579,7 @@ i32.const 3472 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58584,8 +58590,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58623,12 +58629,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3472 - i32.store offset=12 - i32.const 3476 - i32.load - drop local.get $3 local.get $10 local.get $0 @@ -58645,7 +58645,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -58705,7 +58705,7 @@ i32.const 3504 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58716,8 +58716,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58755,12 +58755,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3504 - i32.store offset=12 - i32.const 3508 - i32.load - drop local.get $3 local.get $10 local.get $0 @@ -58777,7 +58771,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $3 @@ -58837,7 +58831,7 @@ i32.const 3536 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58848,8 +58842,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -58887,12 +58881,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3536 - i32.store offset=12 - i32.const 3540 - i32.load - drop local.get $4 local.get $11 local.get $0 @@ -58909,7 +58897,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $4 @@ -58969,7 +58957,7 @@ i32.const 3568 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -58980,8 +58968,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -59019,12 +59007,6 @@ i32.store offset=8 i32.const 4 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 3568 - i32.store offset=12 - i32.const 3572 - i32.load - drop local.get $5 local.get $12 local.get $0 @@ -59041,7 +59023,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer local.get $5 @@ -62071,7 +62053,7 @@ i32.const 7200 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62082,8 +62064,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62116,12 +62098,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7200 - i32.store offset=12 - i32.const 7204 - i32.load - drop local.get $0 local.get $1 i32.const 7200 @@ -62135,7 +62111,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62381,7 +62357,7 @@ i32.const 7296 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62392,8 +62368,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62428,12 +62404,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7296 - i32.store offset=12 - i32.const 7300 - i32.load - drop local.get $0 local.get $1 i32.const 7296 @@ -62447,7 +62417,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62532,7 +62502,7 @@ i32.const 7328 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62543,8 +62513,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62579,12 +62549,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7328 - i32.store offset=12 - i32.const 7332 - i32.load - drop local.get $0 local.get $1 i32.const 7328 @@ -62598,7 +62562,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62677,7 +62641,7 @@ i32.const 7360 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62688,8 +62652,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62724,12 +62688,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7360 - i32.store offset=12 - i32.const 7364 - i32.load - drop local.get $0 local.get $1 i32.const 7360 @@ -62743,7 +62701,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62822,7 +62780,7 @@ i32.const 7392 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62833,8 +62791,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -62869,12 +62827,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7392 - i32.store offset=12 - i32.const 7396 - i32.load - drop local.get $0 local.get $1 i32.const 7392 @@ -62888,7 +62840,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -62970,7 +62922,7 @@ i32.const 7424 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -62981,8 +62933,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63017,12 +62969,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7424 - i32.store offset=12 - i32.const 7428 - i32.load - drop local.get $0 local.get $1 i32.const 7424 @@ -63036,7 +62982,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63118,7 +63064,7 @@ i32.const 7456 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63129,8 +63075,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63165,12 +63111,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7456 - i32.store offset=12 - i32.const 7460 - i32.load - drop local.get $0 local.get $1 i32.const 7456 @@ -63184,7 +63124,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63266,7 +63206,7 @@ i32.const 7488 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63277,8 +63217,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63313,12 +63253,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7488 - i32.store offset=12 - i32.const 7492 - i32.load - drop local.get $0 local.get $1 i32.const 7488 @@ -63332,7 +63266,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -63414,7 +63348,7 @@ i32.const 7520 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -63425,8 +63359,8 @@ i64.const 0 i64.store global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $1 i32.store @@ -63461,12 +63395,6 @@ i32.store offset=8 i32.const 3 global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - i32.const 7520 - i32.store offset=12 - i32.const 7524 - i32.load - drop local.get $0 local.get $1 i32.const 7520 @@ -63480,7 +63408,7 @@ end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer global.get $std/typedarray/forEachCallCount @@ -67875,194 +67803,6 @@ call $~lib/builtins/abort unreachable ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f64) - (local $6 i32) - (local $7 f64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - f64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - f64.load offset=8 - local.get $6 - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $10) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - f64.load - f64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - f64.load offset=8 - local.get $1 - f64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $10) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) (func $~lib/rt/__newArray (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) (local $4 i32) (local $5 i32) @@ -68379,1666 +68119,4 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.add - i32.load8_s - local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.get $0 - i32.add - i32.load8_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_s offset=1 - local.get $5 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_s - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_s offset=1 - local.get $1 - i32.load8_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.add - i32.load8_u - local.get $1 - i32.const 1 - i32.add - local.tee $4 - local.get $0 - i32.add - i32.load8_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $5 - i32.load8_u offset=1 - local.get $5 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.add - local.tee $3 - i32.load8_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.add - local.tee $3 - i32.load8_u - i32.store8 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.add - local.tee $1 - i32.load8_u offset=1 - local.get $1 - i32.load8_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_s - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.add - i32.load16_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_s offset=2 - local.get $5 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_s - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_s offset=2 - local.get $1 - i32.load16_s - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - i32.load16_u - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 1 - i32.shl - i32.add - i32.load16_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $5 - i32.load16_u offset=2 - local.get $5 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 1 - i32.shl - i32.add - local.tee $3 - i32.load16_u - i32.store16 - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store16 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 1 - i32.shl - i32.add - local.tee $1 - i32.load16_u offset=2 - local.get $1 - i32.load16_u - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - i32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $5 - i32.load offset=4 - local.get $5 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - i32.load - i32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - i32.load offset=4 - local.get $1 - i32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $0) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 i64) - (local $6 i32) - (local $7 i64) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - i64.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 3 - i32.shl - i32.add - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $6 - i64.load offset=8 - local.get $6 - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - local.tee $3 - i64.load - i64.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - i64.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 3 - i32.shl - i32.add - local.tee $1 - i64.load offset=8 - local.get $1 - i64.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $7) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) - (func $~lib/util/sort/extendRunRight (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (result i32) - (local $4 i32) - (local $5 f32) - (local $6 i32) - (local $7 f32) - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 16320 - i32.lt_s - if - i32.const 49120 - i32.const 49168 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store offset=8 - local.get $1 - local.get $2 - i32.eq - if - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - return - end - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - f32.load - local.get $0 - local.get $1 - i32.const 1 - i32.add - local.tee $4 - i32.const 2 - i32.shl - i32.add - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.gt_s - if - loop $while-continue|0 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $6 - f32.load offset=4 - local.get $6 - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $11) - i32.const 31 - i32.shr_u - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|0 - end - end - local.get $4 - local.set $2 - loop $while-continue|1 - local.get $1 - local.get $2 - i32.lt_s - if - local.get $0 - local.get $1 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - local.set $5 - local.get $3 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - local.tee $3 - f32.load - f32.store - local.get $1 - i32.const 1 - i32.add - local.set $1 - local.get $3 - local.get $5 - f32.store - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $while-continue|1 - end - end - else - loop $while-continue|2 - local.get $2 - local.get $4 - i32.gt_s - if (result i32) - local.get $0 - local.get $4 - i32.const 2 - i32.shl - i32.add - local.tee $1 - f32.load offset=4 - local.get $1 - f32.load - i32.const 2 - global.set $~argumentsLength - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 - i32.load offset=4 - drop - local.get $3 - i32.load - call_indirect (type $11) - i32.const 0 - i32.ge_s - else - i32.const 0 - end - if - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $while-continue|2 - end - end - end - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $4 - ) ) diff --git a/tests/compiler/ternary.debug.wat b/tests/compiler/ternary.debug.wat index 0eec633c62..91a380b1f5 100644 --- a/tests/compiler/ternary.debug.wat +++ b/tests/compiler/ternary.debug.wat @@ -7,7 +7,6 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (global $ternary/a (mut i32) (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 44)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32812)) (global $~lib/memory/__heap_base i32 (i32.const 32812)) @@ -74,61 +73,25 @@ global.set $~lib/memory/__stack_pointer ) (func $ternary/testVoidInclTypeMismatch (param $cond i32) (param $nop i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - call $~stack_check - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 local.get $cond if - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop - local.tee $2 - i32.store - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) else - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop - local.tee $3 - i32.store offset=4 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 i32.load call_indirect (type $0) end local.get $cond if - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop - local.tee $4 - i32.store offset=8 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 i32.load call_indirect (type $0) else @@ -140,23 +103,12 @@ i32.const 1 drop else - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $nop - local.tee $5 - i32.store offset=12 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 i32.load call_indirect (type $0) end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer ) (func $~start call $start:ternary diff --git a/tests/compiler/ternary.release.wat b/tests/compiler/ternary.release.wat index d54aca92a8..fda76df259 100644 --- a/tests/compiler/ternary.release.wat +++ b/tests/compiler/ternary.release.wat @@ -52,84 +52,39 @@ i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer - block $folding-inner0 - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 1068 - i32.lt_s - br_if $folding-inner0 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store - else - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=4 - end + global.get $~lib/memory/__stack_pointer + i32.const 1068 + i32.lt_s + if + i32.const 33856 + i32.const 33904 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store + local.get $1 + i32.load + call_indirect (type $0) + local.get $0 + if local.get $1 - i32.load offset=4 - drop + i32.load + call_indirect (type $0) + end + local.get $0 + i32.eqz + if local.get $1 i32.load call_indirect (type $0) - local.get $0 - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 - i32.load offset=4 - drop - local.get $1 - i32.load - call_indirect (type $0) - end - local.get $0 - i32.eqz - if - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 - i32.load offset=4 - drop - local.get $1 - i32.load - call_indirect (type $0) - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - return end - i32.const 33856 - i32.const 33904 - i32.const 1 - i32.const 1 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer ) ) diff --git a/tests/compiler/typealias.debug.wat b/tests/compiler/typealias.debug.wat index 3233976073..a32c177783 100644 --- a/tests/compiler/typealias.debug.wat +++ b/tests/compiler/typealias.debug.wat @@ -10,7 +10,6 @@ (global $~lib/shared/runtime/Runtime.Incremental i32 (i32.const 2)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~argumentsLength (mut i32) (i32.const 0)) - (global $$~lib/__closure_env (mut i32) (i32.const 0)) (global $~lib/memory/__data_end i32 (i32.const 156)) (global $~lib/memory/__stack_pointer (mut i32) (i32.const 32924)) (global $~lib/memory/__heap_base i32 (i32.const 32924)) @@ -161,15 +160,14 @@ (func $typealias/outer_function (local $alias i64) (local $inner_function i32) - (local $2 i32) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i64.const 1 local.set $alias i32.const 32 @@ -190,20 +188,13 @@ i32.store local.get $inner_function drop - global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength local.get $inner_function - local.tee $2 - i32.store offset=4 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) diff --git a/tests/compiler/typealias.release.wat b/tests/compiler/typealias.release.wat index 87f8c9c484..997ab9cfcc 100644 --- a/tests/compiler/typealias.release.wat +++ b/tests/compiler/typealias.release.wat @@ -38,7 +38,7 @@ ) (func $~start global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -53,8 +53,8 @@ unreachable end global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.store i32.const 1056 i32.const 1056 call $~lib/string/String.__eq @@ -70,17 +70,11 @@ global.get $~lib/memory/__stack_pointer i32.const 1168 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 1168 - i32.store offset=4 - i32.const 1172 - i32.load - drop i32.const 1168 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer ) From 28a09b1a83de06ff499bffd750ce4ed22176d7d7 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:06:30 -0500 Subject: [PATCH 08/13] Improve closure environment handling and parent pointer support Reserve slot 0 in closure environments for the parent environment pointer, ensuring correct alignment and traversal for nested closures. Track the owning function for each captured local, update environment access logic to traverse parent chains, and initialize the parent pointer when allocating environments. This enhances support for deeply nested closures and corrects environment memory layout. --- src/compiler.ts | 106 ++++++++++++++++++++++++++++++++++++++++-------- src/program.ts | 3 ++ 2 files changed, 93 insertions(+), 16 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 1bcc2d3eee..cfc14027c4 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1796,7 +1796,9 @@ export class Compiler extends DiagnosticEmitter { } if (!instance.capturedLocals.has(local)) { // Calculate proper byte offset with alignment - let currentOffset = 0; + // Reserve slot 0 for parent environment pointer (4 or 8 bytes depending on wasm32/64) + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; // Start after parent pointer slot for (let _keys = Map_keys(instance.capturedLocals), j = 0, m = _keys.length; j < m; ++j) { let existingLocal = _keys[j]; let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; @@ -1807,6 +1809,7 @@ export class Compiler extends DiagnosticEmitter { let align = typeSize; currentOffset = (currentOffset + align - 1) & ~(align - 1); local.envSlotIndex = currentOffset; + local.envOwner = instance; // Track which function owns this capture instance.capturedLocals.set(local, local.envSlotIndex); } if (!instance.envLocal) { @@ -3306,7 +3309,9 @@ export class Compiler extends DiagnosticEmitter { } if (!sourceFunc.capturedLocals.has(local)) { // Calculate proper byte offset based on current environment size with alignment - let currentOffset = 0; + // Reserve slot 0 for parent environment pointer (4 or 8 bytes depending on wasm32/64) + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; // Start after parent pointer slot for (let _keys = Map_keys(sourceFunc.capturedLocals), i = 0, k = _keys.length; i < k; ++i) { let existingLocal = _keys[i]; let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; @@ -3317,6 +3322,7 @@ export class Compiler extends DiagnosticEmitter { let align = typeSize; currentOffset = (currentOffset + align - 1) & ~(align - 1); local.envSlotIndex = currentOffset; + local.envOwner = sourceFunc; // Track which function owns this capture sourceFunc.capturedLocals.set(local, local.envSlotIndex); } // Ensure we have an environment local @@ -7621,13 +7627,18 @@ export class Compiler extends DiagnosticEmitter { } if (local && !captures.has(local)) { local.isCaptured = true; + // Set envOwner to track which function's environment holds this local + if (!local.envOwner) { + local.envOwner = local.parent; + } // If envSlotIndex is already set (from variable declaration), use it if (local.envSlotIndex >= 0) { captures.set(local, local.envSlotIndex); } else { // Calculate proper byte offset based on existing captures with alignment - // We need to compute the end of the last capture (including its size) - let currentOffset = 0; + // Reserve slot 0 for parent environment pointer (4 or 8 bytes depending on wasm32/64) + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; // Start after parent pointer slot for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { let existingLocal = _keys[idx]; // The slot index already accounts for alignment, add the size to get next free offset @@ -8269,6 +8280,25 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.Function: { + // For nested function expressions, scan their body recursively + // This is critical for deeply nested closures that capture from grandparent scopes + let funcExpr = node; + let decl = funcExpr.declaration; + let params = decl.signature.parameters; + // Add the nested function's params to inner names + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.add(params[i].name.text); + } + if (decl.body) { + this.collectCapturedNames(decl.body, innerFunctionNames, outerFlow, declaredVars, capturedNames); + } + // Remove the params after scanning + for (let i = 0, k = params.length; i < k; i++) { + innerFunctionNames.delete(params[i].name.text); + } + break; + } // Add more cases as needed for complete coverage default: { // For other nodes, recursively scan children @@ -8281,14 +8311,15 @@ export class Compiler extends DiagnosticEmitter { private computeEnvironmentSize(captures: Map): i32 { // Calculate the total size based on already-assigned slot indices // The envSlotIndex values were already assigned during capture analysis - let maxEnd = 0; + // Slot 0 is always reserved for the parent environment pointer + let usizeSize = this.options.usizeType.byteSize; + let maxEnd = usizeSize; // Minimum size is parent pointer slot for (let _keys = Map_keys(captures), i = 0, k = _keys.length; i < k; i++) { let local = _keys[i]; let endOfSlot = local.envSlotIndex + local.type.byteSize; if (endOfSlot > maxEnd) maxEnd = endOfSlot; } // Ensure total size is aligned to pointer size - let usizeSize = this.options.usizeType.byteSize; let size = (maxEnd + usizeSize - 1) & ~(usizeSize - 1); return size; } @@ -8417,23 +8448,45 @@ export class Compiler extends DiagnosticEmitter { let flow = this.currentFlow; let currentFunc = flow.sourceFunction; let sizeTypeRef = this.options.sizeTypeRef; + let envOwner = capturedLocal.envOwner; - // Case 1: We're in the function that owns the environment - if (capturedLocal.parent == currentFunc && currentFunc.envLocal) { + // Case 1: We're in the function that owns the environment (the variable was declared here) + if (envOwner == currentFunc && currentFunc.envLocal) { return module.local_get(currentFunc.envLocal.index, sizeTypeRef); } - // Case 2: We're in a closure - use the cached local if available - // The environment was passed via the closure's _env field and stored to global - // before the indirect call. We cache it in a local at function entry because - // nested indirect calls can overwrite the global. + // Case 2: We're in a closure and need to access a variable from an outer scope + // Start from our closure's environment and traverse parent pointers + let envExpr: ExpressionRef; if (currentFunc.closureEnvLocal) { - return module.local_get(currentFunc.closureEnvLocal.index, sizeTypeRef); + envExpr = module.local_get(currentFunc.closureEnvLocal.index, sizeTypeRef); + } else { + // Fallback to global (shouldn't normally happen) + let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); + envExpr = module.global_get(closureEnvGlobal, sizeTypeRef); + } + + // Count how many levels up we need to go + // Start from current function's outer function and walk up to find envOwner + let func: Function | null = currentFunc.outerFunction; + let depth = 0; + while (func && func != envOwner) { + depth++; + func = func.outerFunction; + } + + // Traverse the parent chain: load parent pointer (at offset 0) `depth` times + for (let i = 0; i < depth; i++) { + envExpr = module.load( + this.options.usizeType.byteSize, + false, // unsigned + envExpr, + sizeTypeRef, + 0 // Parent pointer is at offset 0 + ); } - // Case 3: Fallback to global (shouldn't normally happen for closures) - let closureEnvGlobal = this.ensureClosureEnvironmentGlobal(); - return module.global_get(closureEnvGlobal, sizeTypeRef); + return envExpr; } /** Compiles loading a captured variable from the closure environment. */ @@ -8514,6 +8567,27 @@ export class Compiler extends DiagnosticEmitter { module.local_set(envLocal.index, allocExpr, false) ); + // Store parent environment pointer at slot 0 + // If this is a closure (has outerFunction), use closureEnvLocal as parent + // Otherwise, parent is null (0) + let parentEnvExpr: ExpressionRef; + if (instance.closureEnvLocal) { + // This is a nested closure - use the cached closure env as parent + parentEnvExpr = module.local_get(instance.closureEnvLocal.index, sizeTypeRef); + } else { + // This is the outermost function - no parent + parentEnvExpr = options.isWasm64 ? module.i64(0) : module.i32(0); + } + stmts.push( + module.store( + usizeType.byteSize, + module.local_get(envLocal.index, sizeTypeRef), + parentEnvExpr, + sizeTypeRef, + 0 // Parent pointer is at offset 0 + ) + ); + // Initialize captured parameters in the environment // Parameters are already initialized, so copy them now // Local variables (var/let) will be initialized later when they're declared diff --git a/src/program.ts b/src/program.ts index 08e658ccc7..3416db46ea 100644 --- a/src/program.ts +++ b/src/program.ts @@ -3636,6 +3636,9 @@ export class Local extends VariableLikeElement { /** Environment slot index if captured, -1 otherwise. */ envSlotIndex: i32 = -1; + /** The function whose environment this local is stored in. Set when captured. */ + envOwner: Function | null = null; + /** Constructs a new local variable. */ constructor( /** Simple name. */ From 2615b373e354da45e9aa5e8826e94b82dc1f6076 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:06:54 -0500 Subject: [PATCH 09/13] Update closure environment layout in WAT tests Adjusts allocation sizes and field offsets for closure environments in multiple .wat test files, changing from 4 to 8 bytes (and similar increases for larger environments) and updating i32.store/load instructions to use the correct offsets. This aligns the test code with a new closure environment memory layout, likely reflecting changes in the compiler's closure representation. --- tests/compiler/closure-class.debug.wat | 535 ++- tests/compiler/closure-class.release.wat | 948 +++-- tests/compiler/closure-stress.debug.wat | 1809 ++++++-- tests/compiler/closure-stress.release.wat | 4668 +++++++++++++-------- tests/compiler/closure-stress.ts | 135 + tests/compiler/closure.debug.wat | 64 +- tests/compiler/closure.release.wat | 97 +- 7 files changed, 5501 insertions(+), 2755 deletions(-) diff --git a/tests/compiler/closure-class.debug.wat b/tests/compiler/closure-class.debug.wat index 26557c60f6..4a6ff8917e 100644 --- a/tests/compiler/closure-class.debug.wat +++ b/tests/compiler/closure-class.debug.wat @@ -2328,12 +2328,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -2351,12 +2354,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2392,12 +2398,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -2415,12 +2424,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 9 call $~lib/rt/itcms/__new @@ -2438,12 +2450,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2461,12 +2476,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2493,18 +2511,21 @@ (local $$env i32) (local $self i32) (local $5 i32) - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $operand + i32.const 0 i32.store local.get $$env - local.get $operation + local.get $operand i32.store offset=4 local.get $$env - local.get $this + local.get $operation i32.store offset=8 + local.get $$env + local.get $this + i32.store offset=12 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2621,12 +2642,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2644,12 +2668,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -2694,12 +2721,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2717,12 +2747,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -2744,12 +2777,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 15 call $~lib/rt/itcms/__new @@ -2940,12 +2976,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -3064,12 +3103,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3087,12 +3129,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3110,12 +3155,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3145,12 +3193,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 15 call $~lib/rt/itcms/__new @@ -3177,12 +3228,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3200,12 +3254,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3223,12 +3280,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3246,12 +3306,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -3269,12 +3332,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3342,12 +3408,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 25 call $~lib/rt/itcms/__new @@ -3369,12 +3438,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -3392,12 +3464,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3429,12 +3504,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 27 call $~lib/rt/itcms/__new @@ -3456,12 +3534,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 27 call $~lib/rt/itcms/__new @@ -3488,12 +3569,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 29 call $~lib/rt/itcms/__new @@ -3511,12 +3595,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3549,12 +3636,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 31 call $~lib/rt/itcms/__new @@ -3588,15 +3678,18 @@ (local $$env i32) (local $self i32) (local $4 i32) - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $amount + i32.const 0 i32.store local.get $$env - local.get $this + local.get $amount i32.store offset=4 + local.get $$env + local.get $this + i32.store offset=8 i32.const 8 i32.const 34 call $~lib/rt/itcms/__new @@ -3614,15 +3707,18 @@ (local $$env i32) (local $self i32) (local $4 i32) - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $factor + i32.const 0 i32.store local.get $$env - local.get $this + local.get $factor i32.store offset=4 + local.get $$env + local.get $this + i32.store offset=8 i32.const 8 i32.const 34 call $~lib/rt/itcms/__new @@ -3671,12 +3767,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 36 call $~lib/rt/itcms/__new @@ -3694,12 +3793,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -3721,7 +3823,7 @@ local.get $result i32.const 2 i32.mul - i32.store + i32.store offset=4 ) (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $result i32) (local $$closureEnv i32) @@ -3729,7 +3831,7 @@ local.set $$closureEnv local.get $$closureEnv local.get $result - i32.store + i32.store offset=4 ) (func $closure-class/Resource#set:acquired (param $this i32) (param $acquired i32) local.get $this @@ -3749,12 +3851,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3772,12 +3877,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3799,12 +3907,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 38 call $~lib/rt/itcms/__new @@ -3891,12 +4002,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3914,12 +4028,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3964,12 +4081,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -3987,12 +4107,15 @@ (local $self i32) (local $$env i32) (local $3 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $this + i32.const 0 i32.store + local.get $$env + local.get $this + i32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -4894,14 +5017,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -4930,7 +5053,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5278,14 +5401,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -5296,14 +5419,14 @@ i32.add call $closure-class/BankAccount#set:balance local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -5332,7 +5455,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -5343,14 +5466,14 @@ i32.ge_s if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -5361,14 +5484,14 @@ i32.sub call $closure-class/BankAccount#set:balance local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -5410,7 +5533,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5438,7 +5561,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5816,19 +5939,19 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 i32.const 0 i32.eq if local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5836,24 +5959,24 @@ local.get $1 call $closure-class/Calculator#get:result local.get $$closureEnv - i32.load + i32.load offset=4 i32.add call $closure-class/Calculator#set:result else local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 i32.const 1 i32.eq if local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5861,24 +5984,24 @@ local.get $1 call $closure-class/Calculator#get:result local.get $$closureEnv - i32.load + i32.load offset=4 i32.sub call $closure-class/Calculator#set:result else local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 i32.const 2 i32.eq if local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5886,14 +6009,14 @@ local.get $1 call $closure-class/Calculator#get:result local.get $$closureEnv - i32.load + i32.load offset=4 i32.mul call $closure-class/Calculator#set:result end end end local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6163,7 +6286,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6177,7 +6300,7 @@ local.get $1 call $closure-class/Inner#get:value local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6206,7 +6329,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -6500,7 +6623,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6528,14 +6651,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -6564,7 +6687,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -7097,14 +7220,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7115,7 +7238,7 @@ i32.add call $closure-class/DataProcessor#set:processedCount local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7124,14 +7247,14 @@ local.get $data call $closure-class/DataProcessor#set:lastValue local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7830,7 +7953,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7862,7 +7985,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7894,7 +8017,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -8037,7 +8160,7 @@ global.get $~lib/memory/__stack_pointer i32.const 1392 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -8063,7 +8186,7 @@ i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -8079,7 +8202,7 @@ local.tee $query i32.store offset=20 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -8104,7 +8227,7 @@ local.get $2 i32.const 1472 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -8341,7 +8464,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8354,7 +8477,7 @@ i32.const 1 else local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8366,7 +8489,7 @@ end if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8406,7 +8529,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8417,7 +8540,7 @@ i32.eq if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8457,7 +8580,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8470,7 +8593,7 @@ i32.const 1 else local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8482,7 +8605,7 @@ end if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8522,7 +8645,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -8549,7 +8672,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -9251,7 +9374,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -9388,7 +9511,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -9397,7 +9520,7 @@ call $closure-class/Observable#get:value local.set $oldValue local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -9410,7 +9533,7 @@ loop $for-loop|0 local.get $i local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -9431,7 +9554,7 @@ i32.const 2 global.set $~argumentsLength local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -9479,7 +9602,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -9561,14 +9684,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -9597,14 +9720,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -9929,14 +10052,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -9975,7 +10098,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -10122,7 +10245,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -10276,14 +10399,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -10291,11 +10414,11 @@ local.get $1 call $closure-class/ChainableCounter#get:count local.get $$closureEnv - i32.load + i32.load offset=4 i32.add call $closure-class/ChainableCounter#set:count local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -10318,14 +10441,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -10333,11 +10456,11 @@ local.get $1 call $closure-class/ChainableCounter#get:count local.get $$closureEnv - i32.load + i32.load offset=4 i32.mul call $closure-class/ChainableCounter#set:count local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $1 global.get $~lib/memory/__stack_pointer i32.const 8 @@ -10560,7 +10683,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -10569,7 +10692,7 @@ call $closure-class/Task#get:completed if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -10590,7 +10713,7 @@ call_indirect (type $3) else local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -10635,7 +10758,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -10644,7 +10767,7 @@ i32.const 1 call $closure-class/Task#set:completed local.get $$closureEnv - i32.load + i32.load offset=4 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -10657,7 +10780,7 @@ loop $for-loop|0 local.get $i local.get $$closureEnv - i32.load + i32.load offset=4 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -10677,7 +10800,7 @@ i32.const 1 global.set $~argumentsLength local.get $$closureEnv - i32.load + i32.load offset=4 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -10755,9 +10878,12 @@ i32.const 0 i32.const 24 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env + local.get $$env + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 0 call $closure-class/Task#constructor @@ -10785,7 +10911,7 @@ i32.store offset=12 local.get $$env i32.const 0 - i32.store + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -10815,7 +10941,7 @@ i32.load call_indirect (type $3) local.get $$env - i32.load + i32.load offset=4 i32.const 0 i32.eq i32.eqz @@ -10841,7 +10967,7 @@ i32.load call_indirect (type $3) local.get $$env - i32.load + i32.load offset=4 i32.const 42 i32.eq i32.eqz @@ -10874,7 +11000,7 @@ unreachable end local.get $$env - i32.load + i32.load offset=4 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 24 @@ -10902,9 +11028,12 @@ i32.const 0 i32.const 24 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env + local.get $$env + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 0 call $closure-class/Task#constructor @@ -10945,7 +11074,7 @@ call_indirect (type $3) local.get $$env i32.const 0 - i32.store + i32.store offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -10975,7 +11104,7 @@ i32.load call_indirect (type $3) local.get $$env - i32.load + i32.load offset=4 local.set $8 global.get $~lib/memory/__stack_pointer i32.const 24 @@ -11052,7 +11181,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -11062,7 +11191,7 @@ i32.eqz if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -11102,7 +11231,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -11111,7 +11240,7 @@ call $closure-class/Resource#get:acquired if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -11155,7 +11284,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -11164,14 +11293,14 @@ call $closure-class/Resource#get:acquired if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 i32.store local.get $3 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $3 global.get $~lib/memory/__stack_pointer local.get $3 @@ -11986,7 +12115,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -11999,7 +12128,7 @@ loop $for-loop|0 local.get $i local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -12016,7 +12145,7 @@ if global.get $~lib/memory/__stack_pointer local.get $$closureEnv - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -12089,7 +12218,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $6 global.get $~lib/memory/__stack_pointer local.get $6 @@ -12121,7 +12250,7 @@ loop $for-loop|0 local.get $i local.get $$closureEnv - i32.load + i32.load offset=4 local.set $6 global.get $~lib/memory/__stack_pointer local.get $6 @@ -12138,7 +12267,7 @@ if global.get $~lib/memory/__stack_pointer local.get $$closureEnv - i32.load + i32.load offset=4 local.set $6 global.get $~lib/memory/__stack_pointer local.get $6 @@ -12513,7 +12642,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -12524,7 +12653,7 @@ i32.gt_s if local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -12532,7 +12661,7 @@ local.get $1 call $closure-class/Range#get:current local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -12549,7 +12678,7 @@ return else local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -12557,7 +12686,7 @@ local.get $1 call $closure-class/Range#get:current local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -12590,7 +12719,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -12599,14 +12728,14 @@ call $closure-class/Range#get:current local.set $value local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 i32.store local.get $2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -12614,7 +12743,7 @@ local.get $2 call $closure-class/Range#get:current local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 diff --git a/tests/compiler/closure-class.release.wat b/tests/compiler/closure-class.release.wat index 3c00d6cdaa..7145cd57a2 100644 --- a/tests/compiler/closure-class.release.wat +++ b/tests/compiler/closure-class.release.wat @@ -1681,19 +1681,24 @@ ) (func $closure-class/Counter#getIncrementClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -1707,19 +1712,24 @@ ) (func $closure-class/Counter#getCountClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -1740,20 +1750,23 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/allocateBlock local.tee $4 i32.const 4 i32.add local.tee $3 - local.get $1 + i32.const 0 i32.store local.get $4 - local.get $2 + local.get $1 i32.store offset=8 local.get $4 - local.get $0 + local.get $2 i32.store offset=12 + local.get $4 + local.get $0 + i32.store offset=16 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -1826,19 +1839,24 @@ ) (func $closure-class/DataProcessor#getProcessorClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -1880,17 +1898,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/allocateBlock local.tee $3 i32.const 4 i32.add local.tee $2 - local.get $1 + i32.const 0 i32.store local.get $3 - local.get $0 + local.get $1 i32.store offset=8 + local.get $3 + local.get $0 + i32.store offset=12 i32.const 8 i32.const 34 call $~lib/rt/itcms/__new @@ -1904,19 +1925,24 @@ ) (func $closure-class/Task#getThenClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 36 call $~lib/rt/itcms/__new @@ -1930,19 +1956,24 @@ ) (func $closure-class/Task#getCompleteClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -1959,12 +1990,12 @@ local.get $0 i32.const 1 i32.shl - i32.store + i32.store offset=4 ) (func $closure-class/testTaskCallbackAfterComplete~anonymous|0 (param $0 i32) global.get $$~lib/__closure_env local.get $0 - i32.store + i32.store offset=4 ) (func $closure-class/testResourceManagement~anonymous|0 (result i32) i32.const 42 @@ -1980,19 +2011,24 @@ ) (func $closure-class/TreeNode#getSumClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2006,19 +2042,24 @@ ) (func $closure-class/TreeNode#getDepthClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2032,19 +2073,24 @@ ) (func $closure-class/Range#getHasNextClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -2058,19 +2104,24 @@ ) (func $closure-class/Range#getNextClosure (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2605,11 +2656,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2633,11 +2687,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -2866,11 +2923,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2894,11 +2954,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -2922,11 +2985,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 15 call $~lib/rt/itcms/__new @@ -3120,11 +3186,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3148,11 +3217,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3176,11 +3248,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 20 call $~lib/rt/itcms/__new @@ -3204,11 +3279,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $1 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=8 i32.const 8 i32.const 15 call $~lib/rt/itcms/__new @@ -3330,11 +3408,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 29 call $~lib/rt/itcms/__new @@ -3358,11 +3439,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -3465,11 +3549,14 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $2 - local.get $0 + i32.const 0 i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 31 call $~lib/rt/itcms/__new @@ -3596,14 +3683,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/allocateBlock local.tee $4 - i32.const 2 + i32.const 0 i32.store offset=4 local.get $4 - local.get $1 + i32.const 2 i32.store offset=8 + local.get $4 + local.get $1 + i32.store offset=12 i32.const 8 i32.const 34 call $~lib/rt/itcms/__new @@ -3694,9 +3784,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - local.set $0 + local.tee $0 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer call $closure-class/Task#constructor local.tee $1 @@ -3719,7 +3811,7 @@ i32.store offset=12 local.get $0 i32.const 0 - i32.store offset=4 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -3745,7 +3837,7 @@ i32.load call_indirect (type $1) local.get $0 - i32.load offset=4 + i32.load offset=8 if i32.const 0 i32.const 1520 @@ -3765,7 +3857,7 @@ i32.load call_indirect (type $1) local.get $0 - i32.load offset=4 + i32.load offset=8 i32.const 42 i32.ne if @@ -3809,7 +3901,7 @@ unreachable end local.get $0 - i32.load offset=4 + i32.load offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 i32.add @@ -3842,9 +3934,11 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - local.set $0 + local.tee $0 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer call $closure-class/Task#constructor local.tee $1 @@ -3877,7 +3971,7 @@ call_indirect (type $1) local.get $0 i32.const 0 - i32.store offset=4 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -3903,7 +3997,7 @@ i32.load call_indirect (type $1) local.get $0 - i32.load offset=4 + i32.load offset=8 global.get $~lib/memory/__stack_pointer i32.const 24 i32.add @@ -4530,12 +4624,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -4571,7 +4665,7 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -4606,12 +4700,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load + i32.load offset=4 local.tee $3 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $3 @@ -4622,12 +4716,12 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -4666,7 +4760,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $2 i32.store local.get $0 @@ -4676,12 +4770,12 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 local.get $2 @@ -4692,12 +4786,12 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -4741,7 +4835,7 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -4758,6 +4852,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/memory/__stack_pointer i32.const 68 i32.sub @@ -4787,35 +4882,35 @@ i32.const 8 i32.const 7 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 - local.get $2 + local.get $0 i32.const 100 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -4823,27 +4918,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add - local.tee $1 - local.get $2 + local.tee $3 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $4 i32.const 3 i32.store + local.get $4 local.get $3 - local.get $1 i32.store offset=4 - local.get $3 + local.get $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -4851,27 +4950,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $1 i32.const 4 i32.add - local.tee $4 - local.get $2 + local.tee $3 + i32.const 0 i32.store + local.get $1 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 9 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 4 i32.store - local.get $0 - local.get $4 + local.get $1 + local.get $3 i32.store offset=4 - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -4879,27 +4982,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $5 - local.get $2 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 5 i32.store - local.get $1 + local.get $2 local.get $5 i32.store offset=4 - local.get $1 + local.get $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -4907,41 +5014,45 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $5 i32.const 4 i32.add - local.tee $5 - local.get $2 + local.tee $6 + i32.const 0 i32.store + local.get $5 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $0 i32.const 6 i32.store - local.get $2 - local.get $5 + local.get $0 + local.get $6 i32.store offset=4 - local.get $2 + local.get $0 i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=24 - local.get $3 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 50 - local.get $3 + local.get $4 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=28 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.const 150 @@ -4955,13 +5066,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=32 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 30 - local.get $0 + local.get $1 i32.load call_indirect (type $2) i32.eqz @@ -4974,12 +5085,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=36 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.const 120 @@ -4993,13 +5104,13 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=40 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 200 - local.get $0 + local.get $1 i32.load call_indirect (type $2) if @@ -5011,12 +5122,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=44 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.const 120 @@ -5030,12 +5141,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=48 - local.get $2 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - local.get $2 + local.get $0 i32.load call_indirect (type $0) i32.const 2 @@ -5049,23 +5160,23 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $4 i32.store offset=52 - local.get $3 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 100 - local.get $3 + local.get $4 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=56 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 220 - local.get $0 + local.get $1 i32.load call_indirect (type $2) i32.eqz @@ -5078,27 +5189,27 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=60 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.const 1000 i32.mul - local.set $0 + local.set $1 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $0 i32.store offset=64 - local.get $2 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - local.get $2 + local.get $0 i32.load call_indirect (type $0) - local.get $0 + local.get $1 i32.add global.get $~lib/memory/__stack_pointer i32.const 68 @@ -5137,7 +5248,7 @@ i64.store global.get $$~lib/__closure_env local.tee $0 - i32.load offset=4 + i32.load offset=8 local.tee $1 if local.get $1 @@ -5146,42 +5257,42 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 i32.store offset=4 local.get $1 local.get $2 i32.load local.get $0 - i32.load + i32.load offset=4 i32.sub i32.store else local.get $0 - i32.load offset=4 + i32.load offset=8 i32.const 2 i32.eq if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 i32.store offset=4 local.get $1 local.get $2 i32.load local.get $0 - i32.load + i32.load offset=4 i32.mul i32.store end @@ -5189,25 +5300,25 @@ else global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $2 i32.store offset=4 local.get $1 local.get $2 i32.load local.get $0 - i32.load + i32.load offset=4 i32.add i32.store end global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=8 + i32.load offset=12 local.tee $0 i32.store local.get $0 @@ -5241,7 +5352,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -5253,7 +5364,7 @@ i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -5286,7 +5397,7 @@ i64.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -5326,12 +5437,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -5367,7 +5478,7 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -5723,12 +5834,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 local.get $1 @@ -5739,7 +5850,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -5747,12 +5858,12 @@ i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=4 local.get $1 @@ -6413,7 +6524,7 @@ i64.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer @@ -6453,7 +6564,7 @@ i64.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer @@ -6493,7 +6604,7 @@ i64.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer @@ -6642,7 +6753,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer @@ -6666,7 +6777,7 @@ i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -6681,7 +6792,7 @@ i32.store offset=20 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -6702,7 +6813,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -6753,7 +6864,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -6761,7 +6872,7 @@ if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -6774,7 +6885,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -6817,7 +6928,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -6827,7 +6938,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -6870,7 +6981,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -6882,7 +6993,7 @@ else global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -6893,7 +7004,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -6934,7 +7045,7 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -6953,6 +7064,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $~lib/memory/__stack_pointer i32.const 84 i32.sub @@ -7014,13 +7126,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add local.tee $2 - local.get $4 + i32.const 0 i32.store + local.get $0 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -7042,13 +7158,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $1 i32.const 4 i32.add local.tee $3 - local.get $4 + i32.const 0 i32.store + local.get $1 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -7070,13 +7190,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $5 - local.get $4 + i32.const 0 i32.store + local.get $2 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new @@ -7098,13 +7222,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $3 i32.const 4 i32.add local.tee $6 - local.get $4 + i32.const 0 i32.store + local.get $3 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -7126,13 +7254,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $6 i32.const 4 i32.add - local.tee $6 - local.get $4 + local.tee $7 + i32.const 0 i32.store + local.get $6 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -7140,7 +7272,7 @@ i32.const 22 i32.store local.get $4 - local.get $6 + local.get $7 i32.store offset=4 local.get $4 i32.store offset=24 @@ -7416,7 +7548,7 @@ i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -7464,7 +7596,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $3 i32.store local.get $3 @@ -7472,7 +7604,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $4 i32.store local.get $4 @@ -7481,7 +7613,7 @@ loop $for-loop|0 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -7496,7 +7628,7 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -7552,12 +7684,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -7595,12 +7727,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $3 - i32.load + i32.load offset=4 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $3 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 local.get $2 @@ -7655,16 +7787,16 @@ i32.const 8 i32.const 23 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 16 @@ -7684,34 +7816,34 @@ i32.const 16 i32.const 24 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $1 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store - local.get $2 + local.get $1 i32.const 0 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -7721,34 +7853,34 @@ local.tee $3 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $3 i32.store offset=12 - local.get $2 + local.get $1 local.get $3 i32.store - local.get $2 + local.get $1 local.get $3 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 32 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $1 i32.store offset=4 - local.get $2 + local.get $1 i32.const 0 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -7756,30 +7888,30 @@ i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=8 local.get $1 + i32.store offset=8 local.get $2 - i32.store offset=4 local.get $1 + i32.store offset=4 local.get $2 + local.get $1 i32.const 0 call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 - local.get $1 + local.get $2 i32.const 0 i32.store global.get $~lib/memory/__stack_pointer i32.const 12 i32.add global.set $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -7787,27 +7919,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $2 - local.get $1 + local.tee $3 + i32.const 0 i32.store + local.get $0 + local.get $2 + i32.store offset=8 i32.const 8 i32.const 25 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $0 i32.const 23 i32.store + local.get $0 local.get $3 - local.get $2 i32.store offset=4 - local.get $3 + local.get $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -7815,27 +7951,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $1 i32.const 4 i32.add local.tee $4 - local.get $1 + i32.const 0 i32.store + local.get $1 + local.get $2 + i32.store offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 24 i32.store - local.get $0 + local.get $1 local.get $4 i32.store offset=4 - local.get $0 + local.get $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -7843,23 +7983,27 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $4 i32.const 4 i32.add - local.tee $4 - local.get $1 + local.tee $5 + i32.const 0 i32.store + local.get $4 + local.get $2 + i32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 25 i32.store - local.get $1 - local.get $4 + local.get $2 + local.get $5 i32.store offset=4 - local.get $1 + local.get $2 i32.store offset=16 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer @@ -7914,33 +8058,37 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $3 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $5 + i32.const 0 i32.store + local.get $3 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 27 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.const 26 i32.store + local.get $3 local.get $5 - local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=24 - local.get $3 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 local.get $3 + local.get $0 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer @@ -7952,72 +8100,76 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $3 i32.const 4 i32.add - local.tee $2 - local.get $4 + local.tee $5 + i32.const 0 i32.store + local.get $3 + local.get $4 + i32.store offset=8 i32.const 8 i32.const 27 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.const 27 i32.store + local.get $3 local.get $5 - local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=32 - local.get $3 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 local.get $3 + local.get $0 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=36 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 10 - local.get $0 + local.get $1 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=40 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 25 - local.get $0 + local.get $1 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=44 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env i32.const 20 - local.get $0 + local.get $1 i32.load call_indirect (type $1) global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=48 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.const 20 @@ -8061,12 +8213,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=52 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -8165,12 +8317,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=8 local.get $2 @@ -8215,7 +8367,7 @@ i64.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $1 @@ -8259,23 +8411,23 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=4 + i32.load offset=8 local.tee $0 i32.store offset=4 local.get $2 local.get $0 i32.load local.get $1 - i32.load + i32.load offset=4 i32.add i32.store local.get $1 - i32.load offset=4 + i32.load offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -8306,23 +8458,23 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load offset=4 + i32.load offset=8 local.tee $0 i32.store offset=4 local.get $2 local.get $0 i32.load local.get $1 - i32.load + i32.load offset=4 i32.mul i32.store local.get $1 - i32.load offset=4 + i32.load offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add @@ -8426,7 +8578,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $2 i32.store local.get $2 @@ -8434,7 +8586,7 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -8451,7 +8603,7 @@ else global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=12 global.get $~lib/memory/__stack_pointer @@ -8499,7 +8651,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $3 i32.store local.get $3 @@ -8507,7 +8659,7 @@ i32.store8 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store local.get $3 @@ -8516,7 +8668,7 @@ loop $for-loop|0 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -8531,7 +8683,7 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -8588,7 +8740,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -8597,7 +8749,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -8640,7 +8792,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -8648,7 +8800,7 @@ if global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -8694,7 +8846,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $2 i32.store local.get $2 @@ -8702,12 +8854,12 @@ if global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $2 @@ -8802,37 +8954,37 @@ i32.const 8 i32.const 37 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $0 call $~lib/object/Object#constructor - local.tee $3 + local.tee $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store8 global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 + local.get $0 i32.const 0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -8840,27 +8992,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $1 i32.const 4 i32.add - local.tee $2 - local.get $3 + local.tee $3 + i32.const 0 i32.store + local.get $1 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 41 i32.store - local.get $0 - local.get $2 + local.get $1 + local.get $3 i32.store offset=4 - local.get $0 + local.get $1 i32.store offset=8 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -8868,27 +9024,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $4 - local.get $3 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 42 i32.store - local.get $1 + local.get $2 local.get $4 i32.store offset=4 - local.get $1 + local.get $2 i32.store offset=12 global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -8896,35 +9056,39 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $4 i32.const 4 i32.add local.tee $5 - local.get $3 + i32.const 0 i32.store + local.get $4 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 38 call $~lib/rt/itcms/__new - local.tee $2 + local.tee $4 i32.const 43 i32.store - local.get $2 + local.get $4 local.get $5 i32.store offset=4 - local.get $2 + local.get $4 i32.store offset=16 global.get $~lib/memory/__stack_pointer i32.const 3648 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=20 - local.get $2 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 3648 - local.get $2 + local.get $4 i32.load call_indirect (type $2) i32.const -1 @@ -8938,12 +9102,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=24 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 + local.get $1 i32.load call_indirect (type $0) i32.eqz @@ -8956,12 +9120,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $1 i32.store offset=28 - local.get $0 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 + local.get $1 i32.load call_indirect (type $0) if @@ -8976,13 +9140,13 @@ i32.const 3680 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=32 - local.get $2 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 3680 - local.get $2 + local.get $4 i32.load call_indirect (type $2) i32.const 10 @@ -8999,13 +9163,13 @@ i32.const 3712 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=36 - local.get $2 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 3712 - local.get $2 + local.get $4 i32.load call_indirect (type $2) i32.const 20 @@ -9022,13 +9186,13 @@ i32.const 3744 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=40 - local.get $2 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 3744 - local.get $2 + local.get $4 i32.load call_indirect (type $2) i32.const 30 @@ -9042,9 +9206,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 + local.get $0 call $closure-class/Resource#getUseCount i32.const 3 i32.ne @@ -9057,12 +9221,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=44 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) i32.eqz @@ -9075,12 +9239,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $1 + local.get $2 i32.store offset=48 - local.get $1 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $2 i32.load call_indirect (type $0) if @@ -9095,13 +9259,13 @@ i32.const 3776 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $2 + local.get $4 i32.store offset=52 - local.get $2 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 3776 - local.get $2 + local.get $4 i32.load call_indirect (type $2) i32.const -1 @@ -9115,9 +9279,9 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $0 i32.store offset=4 - local.get $3 + local.get $0 call $closure-class/Resource#getUseCount global.get $~lib/memory/__stack_pointer i32.const 56 @@ -9354,7 +9518,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -9363,7 +9527,7 @@ loop $for-loop|0 global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -9379,7 +9543,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $4 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -9451,7 +9615,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $3 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -9473,7 +9637,7 @@ loop $for-loop|0 global.get $~lib/memory/__stack_pointer local.get $3 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer @@ -9489,7 +9653,7 @@ global.get $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer local.get $3 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=8 global.get $~lib/memory/__stack_pointer @@ -9631,7 +9795,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -9641,14 +9805,14 @@ if (result i32) global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -9657,14 +9821,14 @@ else global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 i32.load global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -9702,19 +9866,19 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 i32.load global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $3 i32.store offset=4 local.get $3 @@ -9722,7 +9886,7 @@ local.set $3 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 diff --git a/tests/compiler/closure-stress.debug.wat b/tests/compiler/closure-stress.debug.wat index f23a0a7bd3..989f4d7ded 100644 --- a/tests/compiler/closure-stress.debug.wat +++ b/tests/compiler/closure-stress.debug.wat @@ -48,10 +48,11 @@ (global $closure-stress/callCount (mut i32) (i32.const 0)) (global $closure-stress/fact (mut i32) (i32.const 0)) (global $~lib/native/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 3120)) - (global $~lib/memory/__data_end i32 (i32.const 3204)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 35972)) - (global $~lib/memory/__heap_base i32 (i32.const 35972)) + (global $closure-stress/addResult (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 3472)) + (global $~lib/memory/__data_end i32 (i32.const 3556)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36324)) + (global $~lib/memory/__heap_base i32 (i32.const 36324)) (memory $0 1) (data $0 (i32.const 12) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00") (data $1 (i32.const 44) "<\00\00\00\00\00\00\00\00\00\00\00\02\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\00\00\00\00") @@ -138,9 +139,20 @@ (data $82 (i32.const 3020) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") (data $83 (i32.const 3052) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\02\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") (data $84 (i32.const 3084) "\1c\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\08\00\00\00A\00B\00C\00D\00\00\00\00\00") - (data $85 (i32.const 3120) "\14\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\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\00\00\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12\00\00\00\00\00\00\00\00\00") - (table $0 64 64 funcref) - (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|2 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|1 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/simpleClosureArray~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/closureInConditional~anonymous|0 $closure-stress/closureInConditional~anonymous|1 $closure-stress/closureEscapingBlock~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|1 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/makeMultiplier~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/ignoreCapture~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|1 $closure-stress/multipleClosureReturns~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/manyClosuresSameEnv~anonymous|5 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureLoopValue~anonymous|0 $closure-stress/interleavedClosures~anonymous|0 $closure-stress/interleavedClosures~anonymous|1 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/mutateStringRef~anonymous|1) + (data $85 (i32.const 3116) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00@\00\00\00\00\00\00\00\00\00\00\00") + (data $86 (i32.const 3148) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00A\00\00\00\00\00\00\00\00\00\00\00") + (data $87 (i32.const 3180) "\1c\00\00\00\00\00\00\00\00\00\00\00\t\00\00\00\08\00\00\00B\00\00\00\00\00\00\00\00\00\00\00") + (data $88 (i32.const 3212) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00C\00\00\00\00\00\00\00\00\00\00\00") + (data $89 (i32.const 3244) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00D\00\00\00\00\00\00\00\00\00\00\00") + (data $90 (i32.const 3276) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00E\00\00\00\00\00\00\00\00\00\00\00") + (data $91 (i32.const 3308) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00F\00\00\00\00\00\00\00\00\00\00\00") + (data $92 (i32.const 3340) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00G\00\00\00\00\00\00\00\00\00\00\00") + (data $93 (i32.const 3372) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00H\00\00\00\00\00\00\00\00\00\00\00") + (data $94 (i32.const 3404) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00I\00\00\00\00\00\00\00\00\00\00\00") + (data $95 (i32.const 3436) "\1c\00\00\00\00\00\00\00\00\00\00\00\04\00\00\00\08\00\00\00J\00\00\00\00\00\00\00\00\00\00\00") + (data $96 (i32.const 3472) "\14\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\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\00\00\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12\00\00\00\00\00\00\00\00\00") + (table $0 75 75 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/testSharedMutation~anonymous|2 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|1 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/simpleClosureArray~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/closureInConditional~anonymous|0 $closure-stress/closureInConditional~anonymous|1 $closure-stress/closureEscapingBlock~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|1 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/makeMultiplier~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/ignoreCapture~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|0 $closure-stress/multipleClosureReturns~anonymous|1 $closure-stress/multipleClosureReturns~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/manyClosuresSameEnv~anonymous|5 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureLoopValue~anonymous|0 $closure-stress/interleavedClosures~anonymous|0 $closure-stress/interleavedClosures~anonymous|1 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/mutateStringRef~anonymous|1 $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 $closure-stress/testNestedClosureFunctions~anonymous|0 $closure-stress/testRangeWithClosure~anonymous|0 $closure-stress/add~anonymous|0 $closure-stress/testTwoClosuresSameVar~anonymous|0 $closure-stress/testTwoClosuresSameVar~anonymous|1 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0 $closure-stress/makeAdderPair~anonymous|0 $closure-stress/makeAdderPair~anonymous|1) (export "memory" (memory $0)) (start $~start) (func $closure-stress/captureI32Param~anonymous|0 (result i32) @@ -148,7 +160,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -2353,12 +2365,15 @@ (func $closure-stress/captureI32Param (param $x i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $x + i32.const 0 i32.store + local.get $$env + local.get $x + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2377,17 +2392,20 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i64.load + i64.load offset=8 ) (func $closure-stress/captureI64Param (param $x i64) (result i32) (local $$env i32) (local $2 i32) - i32.const 8 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env + i32.const 0 + i32.store + local.get $$env local.get $x - i64.store + i64.store offset=8 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new @@ -2406,17 +2424,20 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - f32.load + f32.load offset=4 ) (func $closure-stress/captureF32Param (param $x f32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env + i32.const 0 + i32.store + local.get $$env local.get $x - f32.store + f32.store offset=4 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new @@ -2435,17 +2456,20 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - f64.load + f64.load offset=8 ) (func $closure-stress/captureF64Param (param $x f64) (result i32) (local $$env i32) (local $2 i32) - i32.const 8 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env + i32.const 0 + i32.store + local.get $$env local.get $x - f64.store + f64.store offset=8 i32.const 8 i32.const 7 call $~lib/rt/itcms/__new @@ -2464,17 +2488,20 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load8_u + i32.load8_u offset=4 ) (func $closure-stress/captureBool (param $x i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env + i32.const 0 + i32.store + local.get $$env local.get $x - i32.store8 + i32.store8 offset=4 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -2493,29 +2520,32 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 - i32.add local.get $$closureEnv i32.load offset=8 i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add ) (func $closure-stress/captureMultipleI32 (param $a i32) (param $b i32) (param $c i32) (result i32) (local $$env i32) (local $4 i32) - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store local.get $$env - local.get $b + local.get $a i32.store offset=4 local.get $$env - local.get $c + local.get $b i32.store offset=8 + local.get $$env + local.get $c + i32.store offset=12 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2534,7 +2564,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 f64.convert_i32_s local.get $$closureEnv i64.load offset=8 @@ -2555,9 +2585,12 @@ call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store local.get $$env + local.get $a + i32.store offset=4 + local.get $$env local.get $b i64.store offset=8 local.get $$env @@ -2584,10 +2617,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 - i32.add local.get $$closureEnv i32.load offset=8 i32.add @@ -2606,37 +2636,43 @@ local.get $$closureEnv i32.load offset=28 i32.add + local.get $$closureEnv + i32.load offset=32 + i32.add ) (func $closure-stress/capture8Params (param $a i32) (param $b i32) (param $c i32) (param $d i32) (param $e i32) (param $f i32) (param $g i32) (param $h i32) (result i32) (local $$env i32) (local $9 i32) - i32.const 32 + i32.const 36 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store local.get $$env - local.get $b + local.get $a i32.store offset=4 local.get $$env - local.get $c + local.get $b i32.store offset=8 local.get $$env - local.get $d + local.get $c i32.store offset=12 local.get $$env - local.get $e + local.get $d i32.store offset=16 local.get $$env - local.get $f + local.get $e i32.store offset=20 local.get $$env - local.get $g + local.get $f i32.store offset=24 local.get $$env - local.get $h + local.get $g i32.store offset=28 + local.get $$env + local.get $h + i32.store offset=32 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2655,37 +2691,40 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 - i32.add local.get $$closureEnv i32.load offset=8 i32.add local.get $$closureEnv i32.load offset=12 i32.add + local.get $$closureEnv + i32.load offset=16 + i32.add ) (func $closure-stress/captureParamsAndLocals (param $a i32) (param $b i32) (result i32) (local $$env i32) (local $c i32) (local $d i32) (local $5 i32) - i32.const 16 + i32.const 20 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store local.get $$env - local.get $b + local.get $a i32.store offset=4 local.get $$env - i32.const 100 + local.get $b i32.store offset=8 local.get $$env - i32.const 200 + i32.const 100 i32.store offset=12 + local.get $$env + i32.const 200 + i32.store offset=16 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2705,24 +2744,27 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 local.get $$closureEnv - i32.load + i32.load offset=4 return ) (func $closure-stress/makeCounter (result i32) (local $count i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2742,14 +2784,14 @@ local.set $$closureEnv local.get $$closureEnv local.get $x - i32.store + i32.store offset=4 ) (func $closure-stress/testBidirectionalMutation~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/testSharedMutation~anonymous|0 (local $$closureEnv i32) @@ -2757,10 +2799,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/testSharedMutation~anonymous|1 (local $$closureEnv i32) @@ -2768,17 +2810,17 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.sub - i32.store + i32.store offset=4 ) (func $closure-stress/testSharedMutation~anonymous|2 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/testOuterScopeMutation~anonymous|0 (local $$closureEnv i32) @@ -2786,36 +2828,39 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 2 i32.mul - i32.store + i32.store offset=4 ) (func $closure-stress/testOuterScopeMutation~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/curriedAdd~anonymous|0 (param $b i32) (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.get $b i32.add ) (func $closure-stress/curriedAdd (param $a i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store + local.get $$env + local.get $a + i32.store offset=4 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -2835,18 +2880,21 @@ local.set $$closureEnv local.get $x local.get $$closureEnv - i32.load + i32.load offset=4 i32.gt_s ) (func $closure-stress/makeGreaterThan (param $threshold i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $threshold + i32.const 0 i32.store + local.get $$env + local.get $threshold + i32.store offset=4 i32.const 8 i32.const 12 call $~lib/rt/itcms/__new @@ -2957,7 +3005,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $~lib/array/Array<%28%29=>i32>#get:length_ (param $this i32) (result i32) local.get $this @@ -3030,35 +3078,35 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 ) (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 ) (func $closure-stress/closureInConditional~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/closureInConditional~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 ) (func $closure-stress/closureEscapingBlock~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $~lib/array/Array#set:buffer (param $this i32) (param $buffer i32) local.get $this @@ -3107,7 +3155,7 @@ local.set $$closureEnv local.get $x local.get $$closureEnv - i32.load + i32.load offset=4 i32.mul ) (func $closure-stress/testFilterWithClosure~anonymous|0 (param $x i32) (result i32) @@ -3116,7 +3164,7 @@ local.set $$closureEnv local.get $x local.get $$closureEnv - i32.load + i32.load offset=4 i32.ge_s ) (func $closure-stress/testReduceWithClosure~anonymous|0 (param $acc i32) (param $x i32) (result i32) @@ -3129,9 +3177,9 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.get $$closureEnv - i32.load + i32.load offset=4 i32.add ) (func $closure-stress/makeAdder~anonymous|0 (param $x i32) (result i32) @@ -3140,18 +3188,21 @@ local.set $$closureEnv local.get $x local.get $$closureEnv - i32.load + i32.load offset=4 i32.add ) (func $closure-stress/makeAdder (param $amount i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $amount + i32.const 0 i32.store + local.get $$env + local.get $amount + i32.store offset=4 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -3171,18 +3222,21 @@ local.set $$closureEnv local.get $x local.get $$closureEnv - i32.load + i32.load offset=4 i32.mul ) (func $closure-stress/makeMultiplier (param $factor i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $factor + i32.const 0 i32.store + local.get $$env + local.get $factor + i32.store offset=4 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -3199,15 +3253,18 @@ (func $closure-stress/compose (param $f i32) (param $g i32) (result i32) (local $$env i32) (local $3 i32) - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $f + i32.const 0 i32.store local.get $$env - local.get $g + local.get $f i32.store offset=4 + local.get $$env + local.get $g + i32.store offset=8 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -3392,16 +3449,19 @@ (local $$env i32) (local $cache i32) (local $3 i32) - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $fn + i32.const 0 i32.store local.get $$env + local.get $fn + i32.store offset=4 + local.get $$env i32.const 0 call $"~lib/map/Map#constructor" - i32.store offset=4 + i32.store offset=8 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -3427,9 +3487,9 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 i32.add ) (func $closure-stress/ignoreCapture~anonymous|0 (result i32) @@ -3440,21 +3500,21 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/multipleClosureReturns~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 ) (func $closure-stress/multipleClosureReturns~anonymous|2 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=8 + i32.load offset=12 ) (func $closure-stress/multipleClosureReturns (param $which i32) (result i32) (local $a i32) @@ -3464,18 +3524,21 @@ (local $5 i32) (local $6 i32) (local $7 i32) - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 10 + i32.const 0 i32.store local.get $$env - i32.const 20 + i32.const 10 i32.store offset=4 local.get $$env - i32.const 30 + i32.const 20 i32.store offset=8 + local.get $$env + i32.const 30 + i32.store offset=12 local.get $which i32.const 0 i32.eq @@ -3562,15 +3625,15 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load8_s + i32.load8_s offset=4 local.get $$closureEnv - i32.load8_u offset=1 + i32.load8_u offset=5 i32.add local.get $$closureEnv - i32.load16_s offset=2 + i32.load16_s offset=6 i32.add local.get $$closureEnv - i32.load16_u offset=4 + i32.load16_u offset=8 i32.add ) (func $closure-stress/manyClosuresSameEnv~anonymous|0 @@ -3579,10 +3642,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|1 (local $$closureEnv i32) @@ -3590,10 +3653,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 2 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|2 (local $$closureEnv i32) @@ -3601,10 +3664,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 3 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|3 (local $$closureEnv i32) @@ -3612,10 +3675,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 4 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|4 (local $$closureEnv i32) @@ -3623,27 +3686,24 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 5 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|5 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/manyCaptures~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 - i32.add local.get $$closureEnv i32.load offset=8 i32.add @@ -3674,13 +3734,16 @@ local.get $$closureEnv i32.load offset=44 i32.add + local.get $$closureEnv + i32.load offset=48 + i32.add ) (func $closure-stress/simpleIIFE~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 9 i32.add return @@ -3690,17 +3753,20 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/captureLoopValue (param $val i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $val + i32.const 0 i32.store + local.get $$env + local.get $val + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -3719,7 +3785,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure-stress/interleavedClosures~anonymous|1 (local $$closureEnv i32) @@ -3727,10 +3793,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/interleavedClosures~anonymous|2 (local $$closureEnv i32) @@ -3738,10 +3804,10 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 10 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/interleavedClosures~anonymous|3 (local $$closureEnv i32) @@ -3749,17 +3815,17 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 100 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/captureString~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) local.get $this @@ -3883,7 +3949,175 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + local.get $$closureEnv + i32.load + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load + i32.load offset=4 + return + ) + (func $closure-stress/testRangeWithClosure~anonymous|0 (param $i i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $i + i32.add + i32.store offset=4 + ) + (func $closure-stress/range (param $a i32) (param $b i32) (param $fn i32) + (local $i i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + local.get $a + local.set $i + loop $for-loop|0 + local.get $i + local.get $b + i32.lt_s + if + local.get $i + global.get $~lib/memory/__stack_pointer + i32.const 1 + global.set $~argumentsLength + local.get $fn + local.tee $4 + i32.store + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $5) + local.get $i + i32.const 1 + i32.add + local.set $i + br $for-loop|0 + end + end + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/add~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + local.get $$closureEnv + i32.load offset=8 + i32.add + ) + (func $closure-stress/add (param $a i32) (param $b i32) (result i32) + (local $$env i32) + (local $3 i32) + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $a + i32.store offset=4 + local.get $$env + local.get $b + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 67 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + return + ) + (func $closure-stress/testTwoClosuresSameVar~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 + ) + (func $closure-stress/testTwoClosuresSameVar~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load + i32.load + i32.load offset=4 + local.get $$closureEnv i32.load + i32.load offset=8 + i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add + return + ) + (func $closure-stress/makeAdderPair~anonymous|0 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $$closureEnv + i32.load offset=4 + return + ) + (func $closure-stress/makeAdderPair~anonymous|1 (result i32) + (local $$closureEnv i32) + global.get $$~lib/__closure_env + local.set $$closureEnv + local.get $$closureEnv + i32.load offset=4 ) (func $~lib/rt/__visit_globals (param $0 i32) (local $1 i32) @@ -4217,8 +4451,8 @@ global.get $~lib/memory/__data_end i32.lt_s if - i32.const 36000 - i32.const 36048 + i32.const 36352 + i32.const 36400 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4644,9 +4878,12 @@ i32.const 0 i32.const 24 memory.fill - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env + local.get $$env + i32.const 0 + i32.store global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -4655,7 +4892,7 @@ i32.store local.get $$env i32.const 10 - i32.store + i32.store offset=4 local.get $fns local.set $11 global.get $~lib/memory/__stack_pointer @@ -4682,7 +4919,7 @@ call $~lib/array/Array<%28%29=>i32>#__set local.get $$env i32.const 20 - i32.store offset=4 + i32.store offset=8 local.get $fns local.set $11 global.get $~lib/memory/__stack_pointer @@ -4709,7 +4946,7 @@ call $~lib/array/Array<%28%29=>i32>#__set local.get $$env i32.const 30 - i32.store offset=8 + i32.store offset=12 local.get $fns local.set $11 global.get $~lib/memory/__stack_pointer @@ -5074,7 +5311,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5083,7 +5320,7 @@ i32.const 0 call $~lib/array/Array#__get local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5093,7 +5330,7 @@ call $~lib/array/Array#__get i32.add local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5127,16 +5364,19 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 + i32.store + local.get $$env + i32.const 0 i32.const 3 call $~lib/array/Array#constructor - i32.store + i32.store offset=4 local.get $$env - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5146,7 +5386,7 @@ i32.const 1 call $~lib/array/Array#__set local.get $$env - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5156,7 +5396,7 @@ i32.const 2 call $~lib/array/Array#__set local.get $$env - i32.load + i32.load offset=4 local.set $5 global.get $~lib/memory/__stack_pointer local.get $5 @@ -5213,7 +5453,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5221,7 +5461,7 @@ local.get $1 i32.const 0 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5233,7 +5473,7 @@ i32.mul call $~lib/array/Array#__set local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5241,7 +5481,7 @@ local.get $1 i32.const 1 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5253,7 +5493,7 @@ i32.mul call $~lib/array/Array#__set local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5261,7 +5501,7 @@ local.get $1 i32.const 2 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5291,7 +5531,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5300,7 +5540,7 @@ i32.const 0 call $~lib/array/Array#__get local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5310,7 +5550,7 @@ call $~lib/array/Array#__get i32.add local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5348,16 +5588,19 @@ i32.const 0 i32.const 32 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 + i32.store + local.get $$env + i32.const 0 i32.const 3 call $~lib/array/Array#constructor - i32.store + i32.store offset=4 local.get $$env - i32.load + i32.load offset=4 local.set $11 global.get $~lib/memory/__stack_pointer local.get $11 @@ -5367,7 +5610,7 @@ i32.const 1 call $~lib/array/Array#__set local.get $$env - i32.load + i32.load offset=4 local.set $11 global.get $~lib/memory/__stack_pointer local.get $11 @@ -5377,7 +5620,7 @@ i32.const 2 call $~lib/array/Array#__set local.get $$env - i32.load + i32.load offset=4 local.set $11 global.get $~lib/memory/__stack_pointer local.get $11 @@ -5564,14 +5807,14 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 i32.store local.get $1 local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5600,7 +5843,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $1 global.get $~lib/memory/__stack_pointer local.get $1 @@ -5742,12 +5985,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 10 + i32.const 0 i32.store + local.get $$env + i32.const 10 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 3 @@ -6010,12 +6256,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 5 + i32.const 0 i32.store + local.get $$env + i32.const 5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 10 @@ -6170,12 +6419,15 @@ i32.const 0 i32.const 20 memory.fill - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 100 + i32.const 0 i32.store + local.get $$env + i32.const 100 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 i32.const 5 @@ -6242,7 +6494,7 @@ local.get $7 i32.const 0 call $closure-stress/reduceArray - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -6949,7 +7201,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6959,7 +7211,7 @@ call $"~lib/map/Map#has" if local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -6980,7 +7232,7 @@ i32.const 1 global.set $~argumentsLength local.get $$closureEnv - i32.load + i32.load offset=4 local.tee $2 i32.store offset=4 local.get $2 @@ -6991,7 +7243,7 @@ call_indirect (type $1) local.set $result local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.set $4 global.get $~lib/memory/__stack_pointer local.get $4 @@ -7514,7 +7766,7 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 local.set $2 global.get $~lib/memory/__stack_pointer local.get $2 @@ -7527,120 +7779,509 @@ i32.store offset=4 local.get $2 call $~lib/string/String.__concat + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testRangeWithClosure (result i32) + (local $sum i32) + (local $$env i32) + (local $n i32) + (local $3 i32) + (local $4 i32) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + i32.const 10 + local.set $n + i32.const 0 + local.get $n + i32.const 8 + i32.const 9 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 66 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + call $closure-stress/range + local.get $$env + i32.load offset=4 + local.set $4 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 + return + ) + (func $closure-stress/makeAdderPair (param $initial i32) (result i32) + (local $value i32) + (local $$env i32) + (local $arr i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + local.get $initial + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $arr + i32.store + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 0 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 73 i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $arr + local.set $6 global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=4 + local.get $6 + i32.const 1 i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $5 + local.get $5 + i32.const 74 + i32.store + local.get $5 + local.get $$env + i32.store offset=4 + local.get $5 + local.set $6 + global.get $~lib/memory/__stack_pointer + local.get $6 + i32.store offset=8 + local.get $6 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $arr + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 12 i32.add global.set $~lib/memory/__stack_pointer + local.get $6 + return ) - (func $start:closure-stress - (local $0 i32) - (local $1 i32) - (local $2 i32) + (func $closure-stress/testClosureEscapesFunction (result i32) + (local $pair i32) + (local $increment i32) + (local $getValue i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) - (local $8 i32) - (local $9 i32) + (local $pair2 i32) + (local $increment2 i32) + (local $getValue2 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) - (local $23 i32) - (local $24 i32) - (local $25 i32) - (local $26 i32) - (local $27 i32) - (local $28 i32) - (local $29 i32) - (local $30 i32) - (local $31 i32) - (local $32 i32) - (local $33 i32) - (local $34 i32) - (local $35 i32) - (local $36 i32) - (local $37 i32) - (local $38 i32) - (local $39 i32) - (local $40 i32) global.get $~lib/memory/__stack_pointer - i32.const 168 + i32.const 64 i32.sub global.set $~lib/memory/__stack_pointer call $~stack_check global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 168 + i32.const 64 memory.fill - memory.size - i32.const 16 - i32.shl - global.get $~lib/memory/__heap_base - i32.sub + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $closure-stress/makeAdderPair + local.tee $pair + i32.store + global.get $~lib/memory/__stack_pointer + local.get $pair + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $increment + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $pair + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 i32.const 1 - i32.shr_u - global.set $~lib/rt/itcms/threshold - i32.const 176 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/pinSpace - i32.const 208 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/toSpace - i32.const 352 - call $~lib/rt/itcms/initLazy - global.set $~lib/rt/itcms/fromSpace + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $getValue + i32.store offset=12 global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - i32.const 42 - call $closure-stress/captureI32Param - local.tee $0 - i32.store - local.get $0 + local.get $getValue + local.tee $3 + i32.store offset=16 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 + local.get $3 i32.load call_indirect (type $0) - i32.const 42 + i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 464 - i32.const 13 - i32.const 1 + i32.const 730 + i32.const 3 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength - i32.const -1 - call $closure-stress/captureI32Param - local.tee $1 - i32.store offset=4 - local.get $1 + local.get $increment + local.tee $4 + i32.store offset=20 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + local.get $4 i32.load call_indirect (type $0) - i32.const -1 - i32.eq - i32.eqz + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment + local.tee $5 + i32.store offset=24 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $6 + i32.store offset=28 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 733 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + call $closure-stress/makeAdderPair + local.tee $pair2 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $pair2 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $increment2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $pair2 + local.set $15 + global.get $~lib/memory/__stack_pointer + local.get $15 + i32.store offset=4 + local.get $15 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $getValue2 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $increment2 + local.tee $10 + i32.store offset=44 + local.get $10 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $10 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue2 + local.tee $11 + i32.store offset=48 + local.get $11 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $11 + i32.load + call_indirect (type $0) + i32.const 101 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $12 + i32.store offset=52 + local.get $12 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $12 + i32.load + call_indirect (type $0) + i32.const 12 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 742 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue + local.tee $13 + i32.store offset=56 + local.get $13 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $13 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $getValue2 + local.tee $14 + i32.store offset=60 + local.get $14 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $14 + i32.load + call_indirect (type $0) + i32.add + local.set $15 + global.get $~lib/memory/__stack_pointer + i32.const 64 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $15 + return + ) + (func $start:closure-stress + (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) + (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) + (local $23 i32) + (local $24 i32) + (local $25 i32) + (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i32) + (local $30 i32) + (local $31 i32) + (local $32 i32) + (local $33 i32) + (local $34 i32) + (local $35 i32) + (local $36 i32) + (local $37 i32) + (local $38 i32) + (local $39 i32) + (local $40 i32) + (local $41 i32) + global.get $~lib/memory/__stack_pointer + i32.const 172 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 172 + memory.fill + memory.size + i32.const 16 + i32.shl + global.get $~lib/memory/__heap_base + i32.sub + i32.const 1 + i32.shr_u + global.set $~lib/rt/itcms/threshold + i32.const 176 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/pinSpace + i32.const 208 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/toSpace + i32.const 352 + call $~lib/rt/itcms/initLazy + global.set $~lib/rt/itcms/fromSpace + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const 42 + call $closure-stress/captureI32Param + local.tee $0 + i32.store + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 42 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 13 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + i32.const -1 + call $closure-stress/captureI32Param + local.tee $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const -1 + i32.eq + i32.eqz if i32.const 0 i32.const 464 @@ -8568,17 +9209,17 @@ unreachable end global.get $closure-stress/double - local.set $40 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $40 + local.get $41 i32.store offset=132 - local.get $40 + local.get $41 global.get $closure-stress/add5 - local.set $40 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $40 + local.get $41 i32.store offset=136 - local.get $40 + local.get $41 call $closure-stress/compose global.set $closure-stress/addThenDouble i32.const 3 @@ -8859,11 +9500,11 @@ unreachable end call $closure-stress/captureString - local.set $40 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $40 + local.get $41 i32.store offset=132 - local.get $40 + local.get $41 i32.const 2816 call $~lib/string/String.__eq i32.eqz @@ -8876,11 +9517,11 @@ unreachable end call $closure-stress/mutateStringRef - local.set $40 + local.set $41 global.get $~lib/memory/__stack_pointer - local.get $40 + local.get $41 i32.store offset=132 - local.get $40 + local.get $41 i32.const 3104 call $~lib/string/String.__eq i32.eqz @@ -8892,10 +9533,97 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop - global.get $~lib/memory/__stack_pointer - i32.const 168 + call $closure-stress/testNestedClosureFunctions + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 634 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testRangeWithClosure + i32.const 45 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 654 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3 + i32.const 4 + call $closure-stress/add + global.set $closure-stress/addResult + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + global.get $closure-stress/addResult + local.tee $40 + i32.store offset=168 + local.get $40 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $40 + i32.load + call_indirect (type $0) + i32.const 7 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testTwoClosuresSameVar + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 682 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testDeeplyNestedClosures + i32.const 111 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 707 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + call $closure-stress/testClosureEscapesFunction + i32.const 113 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 746 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + drop + global.get $~lib/memory/__stack_pointer + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer ) @@ -9343,12 +10071,15 @@ i32.const 0 i32.const 28 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 9 @@ -9495,12 +10226,15 @@ i32.const 0 i32.const 40 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 @@ -9657,12 +10391,15 @@ i32.const 0 i32.const 28 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 5 + i32.const 0 i32.store + local.get $$env + i32.const 5 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 @@ -9798,15 +10535,18 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 10 + i32.const 0 i32.store local.get $$env - i32.const 20 + i32.const 10 i32.store offset=4 + local.get $$env + i32.const 20 + i32.store offset=8 local.get $useFirst if global.get $~lib/memory/__stack_pointer @@ -9879,14 +10619,17 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store offset=8 - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env + local.get $$env + i32.const 0 + i32.store i32.const 0 local.set $value local.get $$env i32.const 42 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -9983,13 +10726,16 @@ i32.const 0 i32.const 24 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 - call $closure-stress/Counter#constructor i32.store + local.get $$env + i32.const 0 + call $closure-stress/Counter#constructor + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 @@ -10094,7 +10840,7 @@ i32.const 1 global.set $~argumentsLength local.get $$closureEnv - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.store offset=4 local.get $2 @@ -10107,7 +10853,7 @@ i32.const 1 global.set $~argumentsLength local.get $$closureEnv - i32.load + i32.load offset=4 local.tee $3 i32.store local.get $3 @@ -10180,15 +10926,18 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 10 + i32.const 0 i32.store local.get $$env - i32.const 20 + i32.const 10 i32.store offset=4 + local.get $$env + i32.const 20 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -10280,21 +11029,24 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env + i32.const 0 + i32.store + local.get $$env i32.const 10 - i32.store8 + i32.store8 offset=4 local.get $$env i32.const 20 - i32.store8 offset=1 + i32.store8 offset=5 local.get $$env i32.const 30 - i32.store16 offset=2 + i32.store16 offset=6 local.get $$env i32.const 40 - i32.store16 offset=4 + i32.store16 offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -10360,12 +11112,15 @@ i32.const 0 i32.const 48 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 @@ -10556,45 +11311,48 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 48 + i32.const 52 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 1 + i32.const 0 i32.store local.get $$env - i32.const 2 + i32.const 1 i32.store offset=4 local.get $$env - i32.const 3 + i32.const 2 i32.store offset=8 local.get $$env - i32.const 4 + i32.const 3 i32.store offset=12 local.get $$env - i32.const 5 + i32.const 4 i32.store offset=16 local.get $$env - i32.const 6 + i32.const 5 i32.store offset=20 local.get $$env - i32.const 7 + i32.const 6 i32.store offset=24 local.get $$env - i32.const 8 + i32.const 7 i32.store offset=28 local.get $$env - i32.const 9 + i32.const 8 i32.store offset=32 local.get $$env - i32.const 10 + i32.const 9 i32.store offset=36 local.get $$env - i32.const 11 + i32.const 10 i32.store offset=40 local.get $$env - i32.const 12 + i32.const 11 i32.store offset=44 + local.get $$env + i32.const 12 + i32.store offset=48 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -10644,12 +11402,15 @@ global.get $~lib/memory/__stack_pointer i32.const 0 i32.store - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 1 + i32.const 0 i32.store + local.get $$env + i32.const 1 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 0 global.set $~argumentsLength @@ -10710,12 +11471,15 @@ i32.const 0 i32.const 44 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 @@ -10879,12 +11643,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 2816 + i32.const 0 i32.store + local.get $$env + i32.const 2816 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 18 @@ -10940,12 +11707,15 @@ i32.const 0 i32.const 24 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 2880 + i32.const 0 i32.store + local.get $$env + i32.const 2880 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 19 @@ -11033,4 +11803,441 @@ local.get $10 return ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $$env i32) + (local $2 i32) + (local $innerInner i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$closureEnv + local.get $$closureEnv + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 64 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $innerInner + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $innerInner + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + drop + local.get $$closureEnv + i32.load offset=4 + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testNestedClosureFunctions (result i32) + (local $x i32) + (local $$env i32) + (local $2 i32) + (local $inner i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 0 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 65 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $inner + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $inner + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) + (func $closure-stress/testTwoClosuresSameVar (result i32) + (local $a i32) + (local $$env i32) + (local $2 i32) + (local $b i32) + (local $4 i32) + (local $c i32) + (local $6 i32) + (local $br i32) + (local $8 i32) + (local $cr i32) + (local $10 i32) + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 68 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $b + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $4 + local.get $4 + i32.const 69 + i32.store + local.get $4 + local.get $$env + i32.store offset=4 + local.get $4 + local.tee $c + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $b + local.tee $6 + i32.store offset=8 + local.get $6 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $6 + i32.load + call_indirect (type $0) + local.set $br + local.get $br + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 675 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $c + local.tee $8 + i32.store offset=12 + local.get $8 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $8 + i32.load + call_indirect (type $0) + local.set $cr + local.get $cr + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 677 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load offset=4 + i32.const 2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 464 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $$env + i32.load offset=4 + local.set $10 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $10 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $level3 i32) + (local $$env i32) + (local $3 i32) + (local $fn3 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + i32.const 16 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 100 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 70 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn3 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn3 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0 (result i32) + (local $$closureEnv i32) + (local $level2 i32) + (local $$env i32) + (local $3 i32) + (local $fn2 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $$closureEnv + i32.const 12 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + local.get $$closureEnv + i32.store + local.get $$env + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $3 + local.get $3 + i32.const 71 + i32.store + local.get $3 + local.get $$env + i32.store offset=4 + local.get $3 + local.tee $fn2 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn2 + local.tee $5 + i32.store offset=4 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $0) + local.set $6 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $6 + return + ) + (func $closure-stress/testDeeplyNestedClosures (result i32) + (local $level1 i32) + (local $$env i32) + (local $2 i32) + (local $fn1 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + call $~stack_check + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + i32.const 8 + call $~lib/rt/tlsf/__alloc + local.set $$env + local.get $$env + i32.const 0 + i32.store + local.get $$env + i32.const 1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.set $2 + local.get $2 + i32.const 72 + i32.store + local.get $2 + local.get $$env + i32.store offset=4 + local.get $2 + local.tee $fn1 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + global.set $~argumentsLength + local.get $fn1 + local.tee $4 + i32.store offset=4 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $0) + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $5 + return + ) ) diff --git a/tests/compiler/closure-stress.release.wat b/tests/compiler/closure-stress.release.wat index 0857a945d4..749605566c 100644 --- a/tests/compiler/closure-stress.release.wat +++ b/tests/compiler/closure-stress.release.wat @@ -38,7 +38,8 @@ (global $closure-stress/addThenDouble (mut i32) (i32.const 0)) (global $closure-stress/callCount (mut i32) (i32.const 0)) (global $closure-stress/fact (mut i32) (i32.const 0)) - (global $~lib/memory/__stack_pointer (mut i32) (i32.const 36996)) + (global $closure-stress/addResult (mut i32) (i32.const 0)) + (global $~lib/memory/__stack_pointer (mut i32) (i32.const 37348)) (memory $0 1) (data $0 (i32.const 1036) "\1c") (data $0.1 (i32.const 1048) "\04\00\00\00\08\00\00\00\01") @@ -204,15 +205,37 @@ (data $83.1 (i32.const 4088) "\02\00\00\00\02\00\00\00D") (data $84 (i32.const 4108) "\1c") (data $84.1 (i32.const 4120) "\02\00\00\00\08\00\00\00A\00B\00C\00D") - (data $85 (i32.const 4144) "\14\00\00\00 \00\00\00 \00\00\00 ") - (data $85.1 (i32.const 4200) "\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12") - (table $0 64 64 funcref) - (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/captureI32Param~anonymous|0 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/captureString~anonymous|0) + (data $85 (i32.const 4140) "\1c") + (data $85.1 (i32.const 4152) "\04\00\00\00\08\00\00\00@") + (data $86 (i32.const 4172) "\1c") + (data $86.1 (i32.const 4184) "\04\00\00\00\08\00\00\00A") + (data $87 (i32.const 4204) "\1c") + (data $87.1 (i32.const 4216) "\t\00\00\00\08\00\00\00B") + (data $88 (i32.const 4236) "\1c") + (data $88.1 (i32.const 4248) "\04\00\00\00\08\00\00\00C") + (data $89 (i32.const 4268) "\1c") + (data $89.1 (i32.const 4280) "\04\00\00\00\08\00\00\00D") + (data $90 (i32.const 4300) "\1c") + (data $90.1 (i32.const 4312) "\04\00\00\00\08\00\00\00E") + (data $91 (i32.const 4332) "\1c") + (data $91.1 (i32.const 4344) "\04\00\00\00\08\00\00\00F") + (data $92 (i32.const 4364) "\1c") + (data $92.1 (i32.const 4376) "\04\00\00\00\08\00\00\00G") + (data $93 (i32.const 4396) "\1c") + (data $93.1 (i32.const 4408) "\04\00\00\00\08\00\00\00H") + (data $94 (i32.const 4428) "\1c") + (data $94.1 (i32.const 4440) "\04\00\00\00\08\00\00\00I") + (data $95 (i32.const 4460) "\1c") + (data $95.1 (i32.const 4472) "\04\00\00\00\08\00\00\00J") + (data $96 (i32.const 4496) "\14\00\00\00 \00\00\00 \00\00\00 ") + (data $96.1 (i32.const 4552) "\02A\00\00\02\t\00\00 \00\00\00\00\00\00\00\10\t\12") + (table $0 75 75 funcref) + (elem $0 (i32.const 1) $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI64Param~anonymous|0 $closure-stress/captureF32Param~anonymous|0 $closure-stress/captureF64Param~anonymous|0 $closure-stress/captureBool~anonymous|0 $closure-stress/captureMultipleI32~anonymous|0 $closure-stress/captureMixedTypes~anonymous|0 $closure-stress/capture8Params~anonymous|0 $closure-stress/captureParamsAndLocals~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testBidirectionalMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/testSharedMutation~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testOuterScopeMutation~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/curriedAdd~anonymous|0 $closure-stress/makeGreaterThan~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/mutateCapturedArray~anonymous|0 $closure-stress/captureArray~anonymous|0 $closure-stress/captureClassInstance~anonymous|0 $closure-stress/captureClassInstance~anonymous|1 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/testFilterWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|0 $closure-stress/testReduceWithClosure~anonymous|1 $closure-stress/makeAdder~anonymous|0 $closure-stress/testMapWithClosure~anonymous|0 $closure-stress/compose~anonymous|0 $closure-stress/expensiveComputation $closure-stress/memoize~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/emptyClosure~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/simpleClosureArray~anonymous|1 $closure-stress/simpleClosureArray~anonymous|2 $closure-stress/makeFactorial~anonymous|0 $closure-stress/captureSmallTypes~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/manyClosuresSameEnv~anonymous|1 $closure-stress/manyClosuresSameEnv~anonymous|2 $closure-stress/manyClosuresSameEnv~anonymous|3 $closure-stress/manyClosuresSameEnv~anonymous|4 $closure-stress/captureI32Param~anonymous|0 $closure-stress/manyCaptures~anonymous|0 $closure-stress/simpleIIFE~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/testSharedMutation~anonymous|0 $closure-stress/interleavedClosures~anonymous|2 $closure-stress/interleavedClosures~anonymous|3 $closure-stress/captureString~anonymous|0 $closure-stress/mutateStringRef~anonymous|0 $closure-stress/captureString~anonymous|0 $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 $closure-stress/testNestedClosureFunctions~anonymous|0 $closure-stress/testRangeWithClosure~anonymous|0 $closure-stress/captureOnlyNoParams~anonymous|0 $closure-stress/captureI32Param~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 $closure-stress/testDeeplyNestedClosures~anonymous|0 $closure-stress/makeCounter~anonymous|0 $closure-stress/captureI32Param~anonymous|0) (export "memory" (memory $0)) (start $~start) (func $closure-stress/captureI32Param~anonymous|0 (result i32) global.get $$~lib/__closure_env - i32.load + i32.load offset=4 ) (func $~lib/rt/itcms/visitRoots (local $0 i32) @@ -288,7 +311,7 @@ local.get $1 global.set $~lib/rt/itcms/iter end - block $__inlined_func$~lib/rt/itcms/Object#unlink$346 + block $__inlined_func$~lib/rt/itcms/Object#unlink$369 local.get $0 i32.load offset=4 i32.const -4 @@ -300,7 +323,7 @@ i32.load offset=8 i32.eqz local.get $0 - i32.const 36996 + i32.const 37348 i32.lt_u i32.and i32.eqz @@ -312,7 +335,7 @@ call $~lib/builtins/abort unreachable end - br $__inlined_func$~lib/rt/itcms/Object#unlink$346 + br $__inlined_func$~lib/rt/itcms/Object#unlink$369 end local.get $0 i32.load offset=8 @@ -349,7 +372,7 @@ i32.const 1 else local.get $1 - i32.const 4144 + i32.const 4496 i32.load i32.gt_u if @@ -363,7 +386,7 @@ local.get $1 i32.const 2 i32.shl - i32.const 4148 + i32.const 4500 i32.add i32.load i32.const 32 @@ -947,10 +970,10 @@ if unreachable end - i32.const 37008 + i32.const 37360 i32.const 0 i32.store - i32.const 38576 + i32.const 38928 i32.const 0 i32.store loop $for-loop|0 @@ -961,7 +984,7 @@ local.get $0 i32.const 2 i32.shl - i32.const 37008 + i32.const 37360 i32.add i32.const 0 i32.store offset=4 @@ -979,7 +1002,7 @@ i32.add i32.const 2 i32.shl - i32.const 37008 + i32.const 37360 i32.add i32.const 0 i32.store offset=96 @@ -997,14 +1020,14 @@ br $for-loop|0 end end - i32.const 37008 - i32.const 38580 + i32.const 37360 + i32.const 38932 memory.size i64.extend_i32_s i64.const 16 i64.shl call $~lib/rt/tlsf/addMemory - i32.const 37008 + i32.const 37360 global.set $~lib/rt/tlsf/ROOT ) (func $~lib/rt/itcms/step (result i32) @@ -1089,7 +1112,7 @@ local.set $0 loop $while-continue|0 local.get $0 - i32.const 36996 + i32.const 37348 i32.lt_u if local.get $0 @@ -1185,7 +1208,7 @@ unreachable end local.get $0 - i32.const 36996 + i32.const 37348 i32.lt_u if local.get $0 @@ -1208,7 +1231,7 @@ i32.const 4 i32.add local.tee $0 - i32.const 36996 + i32.const 37348 i32.ge_u if global.get $~lib/rt/tlsf/ROOT @@ -1717,19 +1740,24 @@ ) (func $closure-stress/captureI32Param (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -1743,7 +1771,7 @@ ) (func $closure-stress/captureI64Param~anonymous|0 (result i64) global.get $$~lib/__closure_env - i64.load + i64.load offset=8 ) (func $closure-stress/captureI64Param (param $0 i64) (result i32) (local $1 i32) @@ -1754,27 +1782,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 16 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add - local.tee $2 + local.tee $1 + i32.const 0 + i32.store + local.get $2 local.get $0 - i64.store + i64.store offset=12 i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 2 i32.store - local.get $1 local.get $2 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $2 ) (func $closure-stress/captureF32Param~anonymous|0 (result f32) global.get $$~lib/__closure_env - f32.load + f32.load offset=4 ) (func $closure-stress/captureF32Param (param $0 f32) (result i32) (local $1 i32) @@ -1785,27 +1817,31 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add - local.tee $2 + local.tee $1 + i32.const 0 + i32.store + local.get $2 local.get $0 - f32.store + f32.store offset=8 i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 3 i32.store - local.get $1 local.get $2 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $2 ) (func $closure-stress/captureF64Param~anonymous|0 (result f64) global.get $$~lib/__closure_env - f64.load + f64.load offset=8 ) (func $closure-stress/captureF64Param (param $0 f64) (result i32) (local $1 i32) @@ -1816,43 +1852,52 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 16 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add - local.tee $2 + local.tee $1 + i32.const 0 + i32.store + local.get $2 local.get $0 - f64.store + f64.store offset=12 i32.const 8 i32.const 7 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $2 i32.const 4 i32.store - local.get $1 local.get $2 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $2 ) (func $closure-stress/captureBool~anonymous|0 (result i32) global.get $$~lib/__closure_env - i32.load8_u + i32.load8_u offset=4 ) (func $closure-stress/captureBool (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 + i32.const 0 + i32.store + local.get $2 local.get $0 - i32.store8 + i32.store8 offset=8 i32.const 8 i32.const 8 call $~lib/rt/itcms/__new @@ -1868,11 +1913,11 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load offset=8 - local.get $0 - i32.load + i32.load offset=12 local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add i32.add ) @@ -1885,20 +1930,23 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/allocateBlock local.tee $4 i32.const 4 i32.add local.tee $3 - local.get $0 + i32.const 0 i32.store local.get $4 - local.get $1 + local.get $0 i32.store offset=8 local.get $4 - local.get $2 + local.get $1 i32.store offset=12 + local.get $4 + local.get $2 + i32.store offset=16 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -1914,7 +1962,7 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 f64.convert_i32_s local.get $0 i64.load offset=8 @@ -1932,6 +1980,8 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 + i32.load offset=32 + local.get $0 i32.load offset=28 local.get $0 i32.load offset=24 @@ -1942,11 +1992,9 @@ local.get $0 i32.load offset=12 local.get $0 - i32.load offset=8 - local.get $0 - i32.load - local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add i32.add i32.add @@ -1959,13 +2007,13 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load offset=12 - local.get $0 - i32.load offset=8 + i32.load offset=16 local.get $0 - i32.load + i32.load offset=12 local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add i32.add i32.add @@ -1975,12 +2023,12 @@ global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 local.get $0 - i32.load + i32.load offset=4 ) (func $closure-stress/makeCounter (result i32) (local $0 i32) @@ -1991,69 +2039,73 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $1 i32.const 4 i32.add - local.tee $1 + local.tee $0 i32.const 0 i32.store + local.get $1 + i32.const 0 + i32.store offset=8 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 + local.tee $1 i32.const 10 i32.store - local.get $0 local.get $1 - i32.store offset=4 local.get $0 + i32.store offset=4 + local.get $1 ) (func $closure-stress/testBidirectionalMutation~anonymous|0 (param $0 i32) global.get $$~lib/__closure_env local.get $0 - i32.store + i32.store offset=4 ) (func $closure-stress/testSharedMutation~anonymous|0 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/testSharedMutation~anonymous|1 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 1 i32.sub - i32.store + i32.store offset=4 ) (func $closure-stress/testOuterScopeMutation~anonymous|0 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 1 i32.shl - i32.store + i32.store offset=4 ) (func $closure-stress/curriedAdd~anonymous|0 (param $0 i32) (result i32) global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.get $0 i32.add ) (func $closure-stress/makeGreaterThan~anonymous|0 (param $0 i32) (result i32) local.get $0 global.get $$~lib/__closure_env - i32.load + i32.load offset=4 i32.gt_s ) (func $~lib/rt/itcms/__link (param $0 i32) (param $1 i32) (param $2 i32) @@ -2117,22 +2169,22 @@ ) (func $closure-stress/simpleClosureArray~anonymous|1 (result i32) global.get $$~lib/__closure_env - i32.load offset=4 + i32.load offset=8 ) (func $closure-stress/simpleClosureArray~anonymous|2 (result i32) global.get $$~lib/__closure_env - i32.load offset=8 + i32.load offset=12 ) (func $closure-stress/testMapWithClosure~anonymous|0 (param $0 i32) (result i32) local.get $0 global.get $$~lib/__closure_env - i32.load + i32.load offset=4 i32.mul ) (func $closure-stress/testFilterWithClosure~anonymous|0 (param $0 i32) (result i32) local.get $0 global.get $$~lib/__closure_env - i32.load + i32.load offset=4 i32.ge_s ) (func $closure-stress/testReduceWithClosure~anonymous|0 (param $0 i32) (param $1 i32) (result i32) @@ -2144,32 +2196,37 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load offset=4 + i32.load offset=8 local.get $0 - i32.load + i32.load offset=4 i32.add ) (func $closure-stress/makeAdder~anonymous|0 (param $0 i32) (result i32) local.get $0 global.get $$~lib/__closure_env - i32.load + i32.load offset=4 i32.add ) (func $closure-stress/makeAdder (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -2183,19 +2240,24 @@ ) (func $closure-stress/makeMultiplier (param $0 i32) (result i32) (local $1 i32) + (local $2 i32) global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $2 i32.const 4 i32.add local.tee $1 - local.get $0 + i32.const 0 i32.store + local.get $2 + local.get $0 + i32.store offset=8 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new @@ -2223,9 +2285,9 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load - local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add ) (func $closure-stress/multipleClosureReturns (param $0 i32) (result i32) @@ -2237,20 +2299,23 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/allocateBlock local.tee $2 i32.const 4 i32.add local.tee $1 - i32.const 10 + i32.const 0 i32.store local.get $2 - i32.const 20 + i32.const 10 i32.store offset=8 local.get $2 - i32.const 30 + i32.const 20 i32.store offset=12 + local.get $2 + i32.const 30 + i32.store offset=16 local.get $0 if local.get $0 @@ -2313,13 +2378,13 @@ (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load16_u offset=4 + i32.load16_u offset=8 local.get $0 - i32.load16_s offset=2 + i32.load16_s offset=6 local.get $0 - i32.load8_s + i32.load8_s offset=4 local.get $0 - i32.load8_u offset=1 + i32.load8_u offset=5 i32.add i32.add i32.add @@ -2329,45 +2394,47 @@ global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 2 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|2 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 3 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|3 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 4 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyClosuresSameEnv~anonymous|4 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 5 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/manyCaptures~anonymous|0 (result i32) (local $0 i32) global.get $$~lib/__closure_env local.tee $0 + i32.load offset=48 + local.get $0 i32.load offset=44 local.get $0 i32.load offset=40 @@ -2386,11 +2453,9 @@ local.get $0 i32.load offset=12 local.get $0 - i32.load offset=8 - local.get $0 - i32.load - local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add i32.add i32.add @@ -2405,7 +2470,7 @@ ) (func $closure-stress/simpleIIFE~anonymous|0 (result i32) global.get $$~lib/__closure_env - i32.load + i32.load offset=4 i32.const 9 i32.add ) @@ -2414,24 +2479,67 @@ global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 10 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/interleavedClosures~anonymous|3 (local $0 i32) global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 100 i32.add - i32.store + i32.store offset=4 ) (func $closure-stress/captureString~anonymous|0 (result i32) global.get $$~lib/__closure_env + i32.load offset=4 + ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $$~lib/__closure_env + local.tee $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + i32.load + i32.load offset=4 + ) + (func $closure-stress/testRangeWithClosure~anonymous|0 (param $0 i32) + (local $1 i32) + global.get $$~lib/__closure_env + local.tee $1 + local.get $1 + i32.load offset=4 + local.get $0 + i32.add + i32.store offset=4 + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + global.get $$~lib/__closure_env + local.tee $1 + i32.load + local.set $0 + local.get $1 + i32.load offset=12 + local.get $0 i32.load + i32.load offset=4 + local.get $0 + i32.load offset=8 + i32.add + i32.add ) (func $~lib/rt/__visit_members (param $0 i32) (local $1 i32) @@ -2471,7 +2579,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -2519,7 +2627,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -2534,7 +2642,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -2565,7 +2673,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner3 global.get $~lib/memory/__stack_pointer @@ -2595,8 +2703,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2614,11 +2722,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2735,11 +2843,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2773,7 +2881,7 @@ global.get $~lib/memory/__stack_pointer local.get $0 i32.store - block $__inlined_func$~lib/rt/itcms/__renew$294 + block $__inlined_func$~lib/rt/itcms/__renew$311 i32.const 1073741820 local.get $2 i32.const 1 @@ -2816,7 +2924,7 @@ i32.store offset=16 local.get $2 local.set $1 - br $__inlined_func$~lib/rt/itcms/__renew$294 + br $__inlined_func$~lib/rt/itcms/__renew$311 end local.get $3 local.get $4 @@ -2865,11 +2973,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -2936,11 +3044,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3002,11 +3110,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3121,11 +3229,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3188,11 +3296,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3240,11 +3348,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3256,7 +3364,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -3265,7 +3373,7 @@ local.set $2 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -3276,7 +3384,7 @@ local.set $0 global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -3298,11 +3406,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3314,12 +3422,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $0 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=4 local.get $1 @@ -3332,12 +3440,12 @@ call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $2 i32.store offset=4 local.get $1 @@ -3350,12 +3458,12 @@ call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer local.get $0 - i32.load + i32.load offset=4 local.tee $0 i32.store offset=4 local.get $1 @@ -3379,11 +3487,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3395,12 +3503,12 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $1 - i32.load + i32.load offset=4 local.tee $0 i32.store global.get $~lib/memory/__stack_pointer local.get $1 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $0 @@ -3421,11 +3529,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3436,7 +3544,7 @@ i32.store global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env - i32.load + i32.load offset=4 local.tee $0 i32.store local.get $0 @@ -3452,11 +3560,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3482,11 +3590,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3565,7 +3673,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3668,7 +3776,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3918,8 +4026,8 @@ global.set $~lib/memory/__stack_pointer return end - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -3936,7 +4044,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -3945,7 +4053,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load offset=4 + i32.load offset=8 local.tee $1 i32.store global.get $~lib/memory/__stack_pointer @@ -3953,7 +4061,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4003,7 +4111,7 @@ if global.get $~lib/memory/__stack_pointer local.get $2 - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer @@ -4011,7 +4119,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4064,7 +4172,7 @@ end global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store offset=4 local.get $1 @@ -4077,7 +4185,7 @@ local.set $1 global.get $~lib/memory/__stack_pointer local.get $2 - i32.load offset=4 + i32.load offset=8 local.tee $2 i32.store local.get $2 @@ -4091,8 +4199,8 @@ local.get $1 return end - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4108,11 +4216,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -4211,7 +4319,7 @@ end end end - block $__inlined_func$~lib/util/string/compareImpl$221 + block $__inlined_func$~lib/util/string/compareImpl$223 loop $while-continue|1 local.get $0 local.tee $3 @@ -4231,7 +4339,7 @@ local.get $4 local.get $5 i32.ne - br_if $__inlined_func$~lib/util/string/compareImpl$221 + br_if $__inlined_func$~lib/util/string/compareImpl$223 local.get $2 i32.const 2 i32.add @@ -4272,7 +4380,7 @@ global.set $~lib/memory/__stack_pointer block $folding-inner0 global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4281,7 +4389,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $4 - i32.load + i32.load offset=4 local.tee $2 i32.store global.get $~lib/memory/__stack_pointer @@ -4292,7 +4400,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4309,7 +4417,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner0 global.get $~lib/memory/__stack_pointer @@ -4329,7 +4437,7 @@ local.get $0 local.tee $1 i32.store - block $__inlined_func$~lib/string/String#concat$354 + block $__inlined_func$~lib/string/String#concat$377 local.get $0 i32.const 20 i32.sub @@ -4348,7 +4456,7 @@ global.set $~lib/memory/__stack_pointer i32.const 3936 local.set $0 - br $__inlined_func$~lib/string/String#concat$354 + br $__inlined_func$~lib/string/String#concat$377 end global.get $~lib/memory/__stack_pointer local.get $0 @@ -4377,20 +4485,110 @@ global.set $~lib/memory/__stack_pointer local.get $4 local.get $0 - i32.store + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort unreachable ) + (func $closure-stress/makeAdderPair (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + if + i32.const 37376 + i32.const 37424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.tee $1 + i32.const 0 + i32.store + local.get $2 + local.get $0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 2 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $0 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 73 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 0 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 74 + i32.store + local.get $2 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=8 + local.get $0 + i32.const 1 + local.get $2 + call $~lib/array/Array<%28%29=>i32>#__set + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + ) (func $start:closure-stress (local $0 i32) (local $1 i32) @@ -4401,22 +4599,22 @@ (local $6 i32) (local $7 i32) global.get $~lib/memory/__stack_pointer - i32.const 168 + i32.const 172 i32.sub global.set $~lib/memory/__stack_pointer block $folding-inner1 global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 168 + i32.const 172 memory.fill memory.size i32.const 16 i32.shl - i32.const 36996 + i32.const 37348 i32.sub i32.const 1 i32.shr_u @@ -4728,19 +4926,19 @@ global.get $~lib/rt/tlsf/ROOT i32.const 32 call $~lib/rt/tlsf/allocateBlock - local.tee $4 - i32.const 4 - i32.add - local.tee $5 + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 i32.const 1 - i32.store - local.get $4 + i32.store offset=8 + local.get $3 i64.const 2 i64.store offset=12 - local.get $4 + local.get $3 f32.const 3 f32.store offset=20 - local.get $4 + local.get $3 f64.const 4 f64.store offset=28 i32.const 8 @@ -4750,7 +4948,9 @@ i32.const 7 i32.store local.get $4 - local.get $5 + local.get $3 + i32.const 4 + i32.add i32.store offset=4 local.get $4 i32.store offset=52 @@ -4777,35 +4977,35 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 32 + i32.const 36 call $~lib/rt/tlsf/allocateBlock - local.tee $4 - i32.const 4 - i32.add - local.tee $5 + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 i32.const 1 - i32.store - local.get $4 - i32.const 2 i32.store offset=8 - local.get $4 - i32.const 3 + local.get $3 + i32.const 2 i32.store offset=12 - local.get $4 - i32.const 4 + local.get $3 + i32.const 3 i32.store offset=16 - local.get $4 - i32.const 5 + local.get $3 + i32.const 4 i32.store offset=20 - local.get $4 - i32.const 6 + local.get $3 + i32.const 5 i32.store offset=24 - local.get $4 - i32.const 7 + local.get $3 + i32.const 6 i32.store offset=28 - local.get $4 - i32.const 8 + local.get $3 + i32.const 7 i32.store offset=32 + local.get $3 + i32.const 8 + i32.store offset=36 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -4813,7 +5013,9 @@ i32.const 8 i32.store local.get $4 - local.get $5 + local.get $3 + i32.const 4 + i32.add i32.store offset=4 local.get $4 i32.store offset=56 @@ -4840,23 +5042,23 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 16 + i32.const 20 call $~lib/rt/tlsf/allocateBlock - local.tee $4 - i32.const 4 - i32.add - local.tee $5 + local.tee $3 + i32.const 0 + i32.store offset=4 + local.get $3 i32.const 1 - i32.store - local.get $4 - i32.const 2 i32.store offset=8 - local.get $4 - i32.const 100 + local.get $3 + i32.const 2 i32.store offset=12 - local.get $4 - i32.const 200 + local.get $3 + i32.const 100 i32.store offset=16 + local.get $3 + i32.const 200 + i32.store offset=20 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -4864,7 +5066,9 @@ i32.const 9 i32.store local.get $4 - local.get $5 + local.get $3 + i32.const 4 + i32.add i32.store offset=4 local.get $4 i32.store offset=60 @@ -4993,7 +5197,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5006,54 +5210,59 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.set $3 + local.get $0 i32.const 0 - i32.store + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 9 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 11 i32.store - local.get $5 - local.get $0 + local.get $4 + local.get $3 i32.store offset=4 - local.get $5 + local.get $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 12 i32.store - local.get $6 - local.get $0 + local.get $5 + local.get $3 i32.store offset=4 - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=8 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 10 - local.get $5 + local.get $4 i32.load call_indirect (type $3) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=12 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 10 @@ -5067,22 +5276,22 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=16 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env i32.const 20 - local.get $5 + local.get $4 i32.load call_indirect (type $3) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 20 @@ -5096,12 +5305,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=24 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -5123,7 +5332,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5136,110 +5345,115 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.set $3 + local.get $0 i32.const 0 - i32.store + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 13 i32.store - local.get $5 - local.get $0 + local.get $4 + local.get $3 i32.store offset=4 - local.get $5 + local.get $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 14 i32.store - local.get $6 - local.get $0 + local.get $5 + local.get $3 i32.store offset=4 - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $7 + local.tee $6 i32.const 15 i32.store - local.get $7 - local.get $0 + local.get $6 + local.get $3 i32.store offset=4 - local.get $7 + local.get $6 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=12 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=16 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=20 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=24 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=28 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=32 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $7 + local.get $6 i32.store offset=36 - local.get $7 + local.get $6 i32.load offset=4 global.set $$~lib/__closure_env - local.get $7 + local.get $6 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -5261,7 +5475,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5274,53 +5488,58 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 5 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 16 i32.store - local.get $5 - local.get $0 + local.get $4 + local.get $3 i32.store offset=4 - local.get $5 + local.get $4 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 17 i32.store - local.get $6 - local.get $0 + local.get $5 + local.get $3 i32.store offset=4 - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=8 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=12 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 10 @@ -5334,21 +5553,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=16 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 20 @@ -5362,12 +5581,12 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=24 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -5390,23 +5609,26 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 10 - i32.store + i32.store offset=8 i32.const 8 i32.const 11 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.const 18 i32.store - local.get $4 + local.get $3 local.get $0 + i32.const 4 + i32.add i32.store offset=4 - local.get $4 + local.get $3 global.set $closure-stress/addTo10 global.get $~lib/memory/__stack_pointer global.get $closure-stress/addTo10 @@ -5456,23 +5678,26 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 5 - i32.store + i32.store offset=8 i32.const 8 i32.const 12 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.const 19 i32.store - local.get $4 + local.get $3 local.get $0 + i32.const 4 + i32.add i32.store offset=4 - local.get $4 + local.get $3 global.set $closure-stress/greaterThan5 global.get $~lib/memory/__stack_pointer global.get $closure-stress/greaterThan5 @@ -5518,7 +5743,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5531,66 +5756,69 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/allocateBlock local.tee $0 i32.const 4 i32.add - local.set $4 + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 3 call $~lib/array/Array<%28%29=>i32>#constructor - local.tee $5 + local.tee $4 i32.store local.get $0 i32.const 10 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 20 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 local.get $5 + i32.store offset=8 + local.get $4 i32.const 0 - local.get $6 + local.get $5 call $~lib/array/Array<%28%29=>i32>#__set local.get $0 i32.const 20 - i32.store offset=8 + i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 21 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 local.get $5 + i32.store offset=8 + local.get $4 i32.const 1 - local.get $6 + local.get $5 call $~lib/array/Array<%28%29=>i32>#__set local.get $0 i32.const 30 - i32.store offset=12 + i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 i32.const 8 i32.const 4 @@ -5599,20 +5827,20 @@ i32.const 22 i32.store local.get $0 - local.get $4 + local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=8 - local.get $5 + local.get $4 i32.const 2 local.get $0 call $~lib/array/Array<%28%29=>i32>#__set global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 0 call $~lib/array/Array<%28%29=>i32>#__get local.tee $0 @@ -5625,36 +5853,36 @@ call_indirect (type $0) local.set $0 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 1 call $~lib/array/Array<%28%29=>i32>#__get - local.tee $4 + local.tee $3 i32.store offset=16 - local.get $4 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $4 + local.get $3 i32.load call_indirect (type $0) local.get $0 i32.add local.set $0 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.const 2 call $~lib/array/Array<%28%29=>i32>#__get - local.tee $4 + local.tee $3 i32.store offset=20 - local.get $4 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $4 + local.get $3 i32.load call_indirect (type $0) local.get $0 @@ -5702,7 +5930,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5717,42 +5945,45 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 - i32.const 42 - i32.store + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 42 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 25 i32.store - local.get $5 + local.get $4 local.get $0 + i32.const 4 + i32.add i32.store offset=4 - local.get $5 + local.get $4 i32.store global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=4 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $0) drop global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=8 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -5774,7 +6005,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5789,39 +6020,39 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 4 - i32.add - local.tee $4 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 3 call $~lib/array/Array#constructor - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $5 + i32.load offset=8 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 0 i32.const 1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $5 + i32.load offset=8 + local.tee $3 i32.store - local.get $5 + local.get $3 i32.const 1 i32.const 2 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $0 + i32.load offset=8 + local.tee $3 i32.store - local.get $0 + local.get $3 i32.const 2 i32.const 3 call $~lib/array/Array#__set @@ -5829,21 +6060,23 @@ i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 26 i32.store - local.get $5 local.get $4 + local.get $0 + i32.const 4 + i32.add i32.store offset=4 - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=8 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -5865,7 +6098,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -5878,36 +6111,40 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $0 i32.const 4 i32.add - local.tee $4 + local.set $3 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 3 call $~lib/array/Array#constructor - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $5 + i32.load offset=8 + local.tee $4 i32.store - local.get $5 + local.get $4 i32.const 0 i32.const 1 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 - local.tee $5 + i32.load offset=8 + local.tee $4 i32.store - local.get $5 + local.get $4 i32.const 1 i32.const 2 call $~lib/array/Array#__set global.get $~lib/memory/__stack_pointer local.get $0 - i32.load offset=4 + i32.load offset=8 local.tee $0 i32.store local.get $0 @@ -5918,33 +6155,33 @@ i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $4 i32.const 27 i32.store - local.get $5 local.get $4 + local.get $3 i32.store offset=4 - local.get $5 + local.get $4 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 28 i32.store - local.get $6 - local.get $4 + local.get $5 + local.get $3 i32.store offset=4 - local.get $6 + local.get $5 i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=12 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 6 @@ -5958,21 +6195,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=16 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) i32.const 12 @@ -5986,21 +6223,21 @@ unreachable end global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $4 i32.store offset=24 - local.get $5 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + local.get $4 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=28 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -6022,7 +6259,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6035,18 +6272,21 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - local.tee $4 + local.tee $3 i32.const 4 i32.add - local.set $5 + local.set $4 + local.get $3 + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6067,7 +6307,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6099,67 +6339,67 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - local.get $4 + local.get $3 local.get $0 - i32.store offset=4 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 10 call $~lib/rt/itcms/__new - local.tee $4 + local.tee $3 i32.const 29 i32.store + local.get $3 local.get $4 - local.get $5 i32.store offset=4 - local.get $4 + local.get $3 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $6 + local.tee $5 i32.const 30 i32.store - local.get $6 local.get $5 + local.get $4 i32.store offset=4 - local.get $6 + local.get $5 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=8 - local.get $4 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $4 + local.get $3 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=12 - local.get $4 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $4 + local.get $3 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $3 i32.store offset=16 - local.get $4 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $4 + local.get $3 i32.load call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $6 + local.get $5 i32.store offset=20 - local.get $6 + local.get $5 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + local.get $5 i32.load call_indirect (type $0) global.get $~lib/memory/__stack_pointer @@ -6176,177 +6416,174 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$closure-stress/testMapWithClosure$4 (result i32) - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner00 - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $0 - i32.const 10 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3 - call $~lib/array/Array#constructor - local.tee $4 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 0 - i32.const 1 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - i32.const 8 - i32.const 11 - call $~lib/rt/itcms/__new - local.tee $6 - i32.const 31 - i32.store - local.get $6 - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner00 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 3 + call $~lib/array/Array#constructor + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 31 + i32.store + local.get $5 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + call $~lib/array/Array#get:length + call $~lib/array/Array#constructor + local.tee $0 + i32.store offset=4 + loop $for-loop|0 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store + local.get $3 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store global.get $~lib/memory/__stack_pointer - local.get $4 - call $~lib/array/Array#get:length - call $~lib/array/Array#constructor - local.tee $0 - i32.store offset=4 - loop $for-loop|0 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - local.get $3 - call $~lib/array/Array#__get - local.set $7 - global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=8 - local.get $6 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $0 - local.get $3 - local.get $7 - local.get $6 - i32.load - call_indirect (type $1) - call $~lib/array/Array#__set - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|0 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 + local.get $3 i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 0 + local.get $3 + local.get $2 call $~lib/array/Array#__get - local.set $3 + local.set $6 global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=8 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env local.get $0 - i32.store offset=4 - local.get $0 + local.get $2 + local.get $6 + local.get $5 + i32.load + call_indirect (type $1) + call $~lib/array/Array#__set + local.get $2 i32.const 1 - call $~lib/array/Array#__get - local.get $3 - i32.add - local.set $3 - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - local.get $0 - i32.const 2 - call $~lib/array/Array#__get - local.get $3 i32.add - global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$closure-stress/testMapWithClosure$4 + local.set $2 + br $for-loop|0 end - br $folding-inner1 end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 0 + call $~lib/array/Array#__get + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 1 + call $~lib/array/Array#__get + local.get $2 + i32.add + local.set $2 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=4 + local.get $0 + i32.const 2 + call $~lib/array/Array#__get + local.get $2 + i32.add + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer i32.const 60 i32.ne if @@ -6362,7 +6599,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -6377,177 +6614,175 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.set $2 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 5 - i32.store + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 10 call $~lib/array/Array#constructor - local.tee $4 + local.tee $0 i32.store loop $for-loop|01 - local.get $2 + local.get $1 i32.const 10 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=4 - local.get $4 - local.get $2 - local.get $2 + local.get $0 + local.get $1 + local.get $1 call $~lib/array/Array#__set - local.get $2 + local.get $1 i32.const 1 i32.add - local.set $2 + local.set $1 br $for-loop|01 end end global.get $~lib/memory/__stack_pointer - local.get $4 + local.get $0 i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 12 call $~lib/rt/itcms/__new - local.tee $5 + local.tee $3 i32.const 32 i32.store - local.get $5 - local.get $0 + local.get $3 + local.get $2 i32.store offset=4 global.get $~lib/memory/__stack_pointer - local.get $5 + local.get $3 i32.store offset=8 - block $__inlined_func$closure-stress/filterArray$5 (result i32) - i32.const 0 - local.set $3 + i32.const 0 + local.set $2 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 0 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + loop $for-loop|03 global.get $~lib/memory/__stack_pointer - i32.const 16 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner02 - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner02 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + local.get $0 + i32.store offset=4 + local.get $0 + call $~lib/array/Array#get:length + local.get $2 + i32.gt_s + if global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 + local.get $0 + i32.store offset=4 + local.get $0 + local.get $2 + call $~lib/array/Array#__get global.get $~lib/memory/__stack_pointer - i32.const 0 - call $~lib/array/Array#constructor - local.tee $0 - i32.store - loop $for-loop|03 + local.get $3 + i32.store offset=8 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $1) + if global.get $~lib/memory/__stack_pointer local.get $4 i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/array/Array#__get + local.set $5 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/memory/__stack_pointer local.get $4 - call $~lib/array/Array#get:length - local.get $3 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - local.get $3 - call $~lib/array/Array#__get - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=8 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $1) - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=12 - local.get $4 - local.get $3 - call $~lib/array/Array#__get - local.set $2 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner02 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $0 - i32.load offset=12 - local.tee $6 - i32.const 1 - i32.add - local.tee $7 - call $~lib/array/ensureCapacity - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - i32.load offset=4 - local.get $6 - i32.const 2 - i32.shl - i32.add - local.get $2 - i32.store - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store - local.get $0 - local.get $7 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - end - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $for-loop|03 - end + i32.store + local.get $4 + local.get $4 + i32.load offset=12 + local.tee $6 + i32.const 1 + i32.add + local.tee $7 + call $~lib/array/ensureCapacity + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + i32.load offset=4 + local.get $6 + i32.const 2 + i32.shl + i32.add + local.get $5 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store + local.get $4 + local.get $7 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer end - global.get $~lib/memory/__stack_pointer - i32.const 16 + local.get $2 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - local.get $0 - br $__inlined_func$closure-stress/filterArray$5 + local.set $2 + br $for-loop|03 end - br $folding-inner1 end - local.tee $0 + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $4 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $0 + local.get $4 i32.store offset=4 - local.get $0 + local.get $4 call $~lib/array/Array#get:length global.get $~lib/memory/__stack_pointer i32.const 16 @@ -6563,407 +6798,970 @@ call $~lib/builtins/abort unreachable end - block $__inlined_func$closure-stress/testReduceWithClosure$6 (result i32) - i32.const 0 - local.set $0 + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 20 + memory.fill + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 4 + i32.add + local.set $3 + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + i32.const 100 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 5 + call $~lib/array/Array#constructor + local.tee $4 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 0 + i32.const 1 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 1 + i32.const 2 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 2 + i32.const 3 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 3 + i32.const 4 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + local.get $4 + i32.const 4 + i32.const 5 + call $~lib/array/Array#__set + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 2768 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + loop $for-loop|05 global.get $~lib/memory/__stack_pointer - i32.const 20 - i32.sub - global.set $~lib/memory/__stack_pointer - block $folding-inner04 - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner04 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 20 - memory.fill - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 8 - call $~lib/rt/tlsf/allocateBlock - local.tee $2 - i32.const 4 - i32.add - local.tee $3 - i32.const 100 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 5 - call $~lib/array/Array#constructor - local.tee $4 - i32.store + local.get $4 + i32.store + local.get $4 + call $~lib/array/Array#get:length + local.get $0 + i32.gt_s + if global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=4 + i32.store local.get $4 - i32.const 0 - i32.const 1 - call $~lib/array/Array#__set + local.get $0 + call $~lib/array/Array#__get + local.set $5 global.get $~lib/memory/__stack_pointer - local.get $4 + i32.const 2768 i32.store offset=4 - local.get $4 - i32.const 1 - i32.const 2 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 2 - i32.const 3 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 3 - i32.const 4 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - local.get $4 - i32.const 4 - i32.const 5 - call $~lib/array/Array#__set - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - i32.const 2768 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner04 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - loop $for-loop|05 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - call $~lib/array/Array#get:length - local.get $0 - i32.gt_s - if - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store - local.get $4 - local.get $0 - call $~lib/array/Array#__get - local.set $5 - global.get $~lib/memory/__stack_pointer - i32.const 2768 - i32.store offset=4 - i32.const 2772 - i32.load - global.set $$~lib/__closure_env - local.get $1 - local.get $5 - i32.const 2768 - i32.load - call_indirect (type $4) - local.set $1 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $for-loop|05 - end - end - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $2 - local.get $1 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $1 - i32.const 34 - i32.store - local.get $1 - local.get $3 - i32.store offset=4 - local.get $1 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=16 - local.get $1 - i32.load offset=4 + i32.const 2772 + i32.load global.set $$~lib/__closure_env local.get $1 + local.get $5 + i32.const 2768 i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 20 + call_indirect (type $4) + local.set $1 + local.get $0 + i32.const 1 i32.add - global.set $~lib/memory/__stack_pointer - br $__inlined_func$closure-stress/testReduceWithClosure$6 + local.set $0 + br $for-loop|05 end - br $folding-inner1 end - i32.const 115 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 34 + i32.store + local.get $1 + local.get $3 + i32.store offset=4 + local.get $1 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 20 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 115 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 357 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 5 + call $closure-stress/makeAdder + global.set $closure-stress/add5 + i32.const 10 + call $closure-stress/makeAdder + global.set $closure-stress/add10 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $0 + i32.store offset=100 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 8 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 369 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=104 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 13 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 370 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add10 + local.tee $0 + i32.store offset=112 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 0 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=108 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 371 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 2 + call $closure-stress/makeMultiplier + global.set $closure-stress/double + i32.const 3 + call $closure-stress/makeMultiplier + global.set $closure-stress/triple + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=116 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 379 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=120 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 15 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 380 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/triple + local.tee $0 + i32.store offset=128 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 4 + local.get $0 + i32.load + call_indirect (type $1) + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $1 + i32.store offset=124 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $1) + i32.const 24 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 381 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/double + local.tee $0 + i32.store offset=132 + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/add5 + local.tee $1 + i32.store offset=136 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $0 + i32.store offset=8 + local.get $2 + local.get $1 + i32.store offset=12 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $0 + i32.const 37 + i32.store + local.get $0 + local.get $2 + i32.const 4 + i32.add + i32.store offset=4 + local.get $0 + global.set $closure-stress/addThenDouble + global.get $~lib/memory/__stack_pointer + global.get $closure-stress/addThenDouble + local.tee $0 + i32.store offset=140 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $0 + i32.load + call_indirect (type $1) + i32.const 16 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 388 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.const 24 + memory.fill + i32.const 0 + global.set $closure-stress/callCount + global.get $~lib/memory/__stack_pointer + i32.const 2928 + i32.store + global.get $~lib/memory/__stack_pointer + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=4 + local.get $1 + i32.const 2928 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.const 17 + call $~lib/rt/itcms/__new + local.tee $3 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 16 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + i32.const 48 + call $~lib/arraybuffer/ArrayBuffer#constructor + local.set $4 + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.store offset=8 + local.get $3 + local.get $4 + i32.const 0 + call $~lib/rt/itcms/__link + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=4 + local.get $3 + i32.const 0 + i32.store offset=20 + global.get $~lib/memory/__stack_pointer + i32.const 12 + i32.add + global.set $~lib/memory/__stack_pointer + local.get $1 + local.get $3 + i32.store offset=12 + i32.const 8 + i32.const 11 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 39 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=8 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 413 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 414 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=12 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 5 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 25 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 415 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 416 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=16 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + i32.const 3 + local.get $1 + i32.load + call_indirect (type $1) + i32.const 9 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 417 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 i32.ne if i32.const 0 i32.const 1488 - i32.const 357 - i32.const 1 + i32.const 418 + i32.const 3 call $~lib/builtins/abort unreachable end - i32.const 5 - call $closure-stress/makeAdder - global.set $closure-stress/add5 - i32.const 10 - call $closure-stress/makeAdder - global.set $closure-stress/add10 global.get $~lib/memory/__stack_pointer - global.get $closure-stress/add5 - local.tee $0 - i32.store offset=100 - local.get $0 + local.get $1 + i32.store offset=20 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 3 - local.get $0 + i32.const 5 + local.get $1 i32.load call_indirect (type $1) - i32.const 8 + i32.const 25 i32.ne if i32.const 0 i32.const 1488 - i32.const 369 + i32.const 419 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 420 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 24 + i32.add + global.set $~lib/memory/__stack_pointer + global.get $closure-stress/callCount + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 424 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/add10 - local.tee $0 - i32.store offset=104 - local.get $0 - i32.load offset=4 + i32.const 3168 + i32.store offset=144 + i32.const 3172 + i32.load global.set $$~lib/__closure_env - i32.const 3 - local.get $0 + i32.const 3168 i32.load - call_indirect (type $1) - i32.const 13 + call_indirect (type $0) + i32.const 42 i32.ne if i32.const 0 i32.const 1488 - i32.const 370 + i32.const 434 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/add10 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.store offset=112 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 10 + i32.store offset=8 + local.get $0 + i32.const 20 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 41 + i32.store + local.get $2 local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 0 - local.get $0 + local.get $2 i32.load - call_indirect (type $1) + call_indirect (type $0) global.get $~lib/memory/__stack_pointer - global.get $closure-stress/add5 - local.tee $1 - i32.store offset=108 - local.get $1 - i32.load offset=4 + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 443 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store + global.get $~lib/memory/__stack_pointer + i32.const 3232 + i32.store offset=4 + i32.const 3236 + i32.load global.set $$~lib/__closure_env - local.get $1 + i32.const 3232 i32.load - call_indirect (type $1) - i32.const 15 + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 42 i32.ne if i32.const 0 i32.const 1488 - i32.const 371 + i32.const 451 i32.const 1 call $~lib/builtins/abort unreachable end - i32.const 2 - call $closure-stress/makeMultiplier - global.set $closure-stress/double - i32.const 3 - call $closure-stress/makeMultiplier - global.set $closure-stress/triple global.get $~lib/memory/__stack_pointer - global.get $closure-stress/double + i32.const 0 + call $closure-stress/multipleClosureReturns local.tee $0 - i32.store offset=116 + i32.store offset=148 local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 local.get $0 i32.load - call_indirect (type $1) + call_indirect (type $0) i32.const 10 i32.ne if i32.const 0 i32.const 1488 - i32.const 379 + i32.const 467 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/triple + i32.const 1 + call $closure-stress/multipleClosureReturns local.tee $0 - i32.store offset=120 + i32.store offset=152 local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 local.get $0 i32.load - call_indirect (type $1) - i32.const 15 + call_indirect (type $0) + i32.const 20 i32.ne if i32.const 0 i32.const 1488 - i32.const 380 + i32.const 468 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/triple + i32.const 2 + call $closure-stress/multipleClosureReturns local.tee $0 - i32.store offset=128 + i32.store offset=156 local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 4 local.get $0 i32.load + call_indirect (type $0) + i32.const 30 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 469 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + i32.const 3360 + global.set $closure-stress/fact + global.get $~lib/memory/__stack_pointer + i32.const 3360 + i32.store offset=160 + i32.const 3364 + i32.load + global.set $$~lib/__closure_env + i32.const 5 + i32.const 3360 + i32.load call_indirect (type $1) + i32.const 120 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 483 + i32.const 1 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/double - local.tee $1 - i32.store offset=124 - local.get $1 + global.get $closure-stress/fact + local.tee $0 + i32.store offset=164 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - local.get $1 + i32.const 6 + local.get $0 i32.load call_indirect (type $1) - i32.const 24 + i32.const 720 i32.ne if i32.const 0 i32.const 1488 - i32.const 381 + i32.const 484 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - global.get $closure-stress/double - local.tee $0 - i32.store offset=132 + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - global.get $closure-stress/add5 - local.tee $1 - i32.store offset=136 + i64.const 0 + i64.store global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/allocateBlock - local.tee $2 - i32.const 4 - i32.add - local.tee $3 + local.tee $0 + i32.const 0 + i32.store offset=4 local.get $0 - i32.store - local.get $2 - local.get $1 - i32.store offset=8 + i32.const 10 + i32.store8 offset=8 + local.get $0 + i32.const 20 + i32.store8 offset=9 + local.get $0 + i32.const 30 + i32.store16 offset=10 + local.get $0 + i32.const 40 + i32.store16 offset=12 + global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 11 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $0 - i32.const 37 + local.tee $2 + i32.const 47 i32.store + local.get $2 local.get $0 - local.get $3 + i32.const 4 + i32.add i32.store offset=4 - local.get $0 - global.set $closure-stress/addThenDouble + local.get $2 + i32.store global.get $~lib/memory/__stack_pointer - global.get $closure-stress/addThenDouble - local.tee $0 - i32.store offset=140 - local.get $0 + local.get $2 + i32.store offset=4 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 3 - local.get $0 + local.get $2 i32.load - call_indirect (type $1) - i32.const 16 + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 100 i32.ne if i32.const 0 i32.const 1488 - i32.const 388 + i32.const 496 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 48 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 48 memory.fill - i32.const 0 - global.set $closure-stress/callCount - global.get $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 2928 - i32.store global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -6972,275 +7770,441 @@ global.get $~lib/rt/tlsf/ROOT i32.const 8 call $~lib/rt/tlsf/allocateBlock - local.tee $1 + local.tee $0 i32.const 4 i32.add - local.tee $2 - i32.const 2928 - i32.store - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer + local.set $1 + local.get $0 + i32.const 0 + i32.store offset=4 + local.get $0 i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.const 17 + i32.const 8 + i32.const 10 call $~lib/rt/itcms/__new - local.tee $3 + local.tee $2 + i32.const 48 i32.store - global.get $~lib/memory/__stack_pointer - local.get $3 + local.get $2 + local.get $1 i32.store offset=4 - i32.const 16 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=8 - local.get $3 - local.get $4 + local.get $2 i32.store - local.get $3 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 49 + i32.store local.get $3 + local.get $1 i32.store offset=4 local.get $3 - i32.const 3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 i32.store offset=4 - i32.const 48 - call $~lib/arraybuffer/ArrayBuffer#constructor - local.set $4 global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 50 + i32.store local.get $4 - i32.store offset=8 - local.get $3 + local.get $1 + i32.store offset=4 local.get $4 i32.store offset=8 - local.get $3 - local.get $4 - i32.const 0 - call $~lib/rt/itcms/__link global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 51 + i32.store + local.get $5 + local.get $1 i32.store offset=4 - local.get $3 - i32.const 4 + local.get $5 i32.store offset=12 global.get $~lib/memory/__stack_pointer - local.get $3 + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $6 + i32.const 52 + i32.store + local.get $6 + local.get $1 i32.store offset=4 - local.get $3 - i32.const 0 + local.get $6 i32.store offset=16 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=4 - local.get $3 - i32.const 0 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer - i32.const 12 - i32.add - global.set $~lib/memory/__stack_pointer - local.get $1 - local.get $3 - i32.store offset=8 i32.const 8 - i32.const 11 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 - i32.const 39 + local.tee $7 + i32.const 53 i32.store - local.get $1 - local.get $2 - i32.store offset=4 + local.get $7 local.get $1 i32.store offset=4 + local.get $7 + i32.store offset=20 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=8 - local.get $1 + local.get $2 + i32.store offset=24 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 - local.get $1 + local.get $2 i32.load - call_indirect (type $1) - i32.const 25 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 413 - i32.const 3 - call $~lib/builtins/abort - unreachable - end - global.get $closure-stress/callCount - i32.const 1 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 414 - i32.const 3 - call $~lib/builtins/abort - unreachable - end + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=28 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $4 + i32.store offset=32 + local.get $4 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $4 + i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $5 + i32.load + call_indirect (type $2) global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=12 - local.get $1 + local.get $6 + i32.store offset=40 + local.get $6 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 - local.get $1 + local.get $6 i32.load - call_indirect (type $1) - i32.const 25 + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $7 + i32.store offset=44 + local.get $7 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $7 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 48 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 15 i32.ne if i32.const 0 i32.const 1488 - i32.const 415 - i32.const 3 + i32.const 517 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $closure-stress/callCount - i32.const 1 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 416 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end - global.get $~lib/memory/__stack_pointer - local.get $1 + global.get $~lib/rt/tlsf/ROOT + i32.const 52 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 + local.get $0 + i32.const 2 + i32.store offset=12 + local.get $0 + i32.const 3 i32.store offset=16 - local.get $1 + local.get $0 + i32.const 4 + i32.store offset=20 + local.get $0 + i32.const 5 + i32.store offset=24 + local.get $0 + i32.const 6 + i32.store offset=28 + local.get $0 + i32.const 7 + i32.store offset=32 + local.get $0 + i32.const 8 + i32.store offset=36 + local.get $0 + i32.const 9 + i32.store offset=40 + local.get $0 + i32.const 10 + i32.store offset=44 + local.get $0 + i32.const 11 + i32.store offset=48 + local.get $0 + i32.const 12 + i32.store offset=52 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 54 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 3 - local.get $1 + local.get $2 i32.load - call_indirect (type $1) - i32.const 9 + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 78 i32.ne if i32.const 0 i32.const 1488 - i32.const 417 - i32.const 3 + i32.const 529 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $closure-stress/callCount - i32.const 2 - i32.ne + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store + global.get $~lib/rt/tlsf/ROOT + i32.eqz if - i32.const 0 - i32.const 1488 - i32.const 418 - i32.const 3 - call $~lib/builtins/abort - unreachable + call $~lib/rt/tlsf/initialize end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $1 - i32.store offset=20 - local.get $1 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 55 + i32.store + local.get $2 + local.get $0 + i32.const 4 + i32.add + i32.store offset=4 + local.get $2 + i32.store + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 - local.get $1 + local.get $2 i32.load - call_indirect (type $1) - i32.const 25 + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 10 i32.ne if i32.const 0 i32.const 1488 - i32.const 419 - i32.const 3 + i32.const 539 + i32.const 1 call $~lib/builtins/abort unreachable end - global.get $closure-stress/callCount - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 420 - i32.const 3 - call $~lib/builtins/abort - unreachable + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $~lib/array/Array<%28%29=>i32>#constructor + local.tee $2 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|00 + local.get $0 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 0 + i32.store offset=4 + local.get $1 + local.get $0 + i32.const 10 + i32.mul + i32.store offset=8 + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 56 + i32.store + local.get $3 + local.get $1 + i32.const 4 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $2 + local.get $0 + local.get $3 + call $~lib/array/Array<%28%29=>i32>#__set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|00 + end + end + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + if + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $2 + local.get $1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $3 + i32.store offset=12 + local.get $3 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $3 + i32.load + call_indirect (type $0) + local.get $0 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 + end end global.get $~lib/memory/__stack_pointer - i32.const 24 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - global.get $closure-stress/callCount - i32.const 2 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 424 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 3168 - i32.store offset=144 - i32.const 3172 - i32.load - global.set $$~lib/__closure_env - i32.const 3168 - i32.load - call_indirect (type $0) - i32.const 42 + local.get $0 + i32.const 450 i32.ne if i32.const 0 i32.const 1488 - i32.const 434 + i32.const 564 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 8 + i32.const 44 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store + i32.const 0 + i32.const 44 + memory.fill global.get $~lib/rt/tlsf/ROOT i32.eqz if @@ -7252,18 +8216,19 @@ local.tee $0 i32.const 4 i32.add - local.tee $1 - i32.const 10 - i32.store + local.set $1 local.get $0 - i32.const 20 + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new local.tee $2 - i32.const 41 + i32.const 57 i32.store local.get $2 local.get $1 @@ -7271,167 +8236,114 @@ local.get $2 i32.store global.get $~lib/memory/__stack_pointer - local.get $2 + i32.const 8 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 58 + i32.store + local.get $3 + local.get $1 i32.store offset=4 - local.get $2 + local.get $3 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=8 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $2 + local.get $3 i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 30 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 443 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call_indirect (type $2) global.get $~lib/memory/__stack_pointer i32.const 8 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i32.const 3232 + i32.const 10 + call $~lib/rt/itcms/__new + local.tee $4 + i32.const 59 i32.store - global.get $~lib/memory/__stack_pointer - i32.const 3232 + local.get $4 + local.get $1 i32.store offset=4 - i32.const 3236 - i32.load + local.get $4 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $3 + i32.store offset=16 + local.get $3 + i32.load offset=4 global.set $$~lib/__closure_env - i32.const 3232 + local.get $3 i32.load - call_indirect (type $0) - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 42 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 451 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call_indirect (type $2) global.get $~lib/memory/__stack_pointer - i32.const 0 - call $closure-stress/multipleClosureReturns - local.tee $0 - i32.store offset=148 - local.get $0 + local.get $4 + i32.store offset=20 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 + local.get $4 i32.load - call_indirect (type $0) + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + i32.const 8 i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 467 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call $~lib/rt/itcms/__new + local.tee $5 + i32.const 60 + i32.store + local.get $5 + local.get $1 + i32.store offset=4 + local.get $5 + i32.store offset=24 global.get $~lib/memory/__stack_pointer - i32.const 1 - call $closure-stress/multipleClosureReturns - local.tee $0 - i32.store offset=152 - local.get $0 + local.get $3 + i32.store offset=28 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 + local.get $3 i32.load - call_indirect (type $0) - i32.const 20 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 468 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call_indirect (type $2) global.get $~lib/memory/__stack_pointer - i32.const 2 - call $closure-stress/multipleClosureReturns - local.tee $0 - i32.store offset=156 - local.get $0 + local.get $4 + i32.store offset=32 + local.get $4 i32.load offset=4 global.set $$~lib/__closure_env - local.get $0 - i32.load - call_indirect (type $0) - i32.const 30 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 469 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - i32.const 3360 - global.set $closure-stress/fact - global.get $~lib/memory/__stack_pointer - i32.const 3360 - i32.store offset=160 - i32.const 3364 + local.get $4 i32.load + call_indirect (type $2) + global.get $~lib/memory/__stack_pointer + local.get $5 + i32.store offset=36 + local.get $5 + i32.load offset=4 global.set $$~lib/__closure_env - i32.const 5 - i32.const 3360 + local.get $5 i32.load - call_indirect (type $1) - i32.const 120 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 483 - i32.const 1 - call $~lib/builtins/abort - unreachable - end + call_indirect (type $2) global.get $~lib/memory/__stack_pointer - global.get $closure-stress/fact - local.tee $0 - i32.store offset=164 - local.get $0 + local.get $2 + i32.store offset=40 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 6 - local.get $0 + local.get $2 i32.load - call_indirect (type $1) - i32.const 720 + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 44 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 123 i32.ne if i32.const 0 i32.const 1488 - i32.const 484 + i32.const 585 i32.const 1 call $~lib/builtins/abort unreachable @@ -7441,7 +8353,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7456,29 +8368,22 @@ i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 10 - i32.store8 - local.get $0 - i32.const 20 - i32.store8 offset=5 - local.get $0 - i32.const 30 - i32.store16 offset=6 + i32.const 0 + i32.store offset=4 local.get $0 - i32.const 40 - i32.store16 offset=8 + i32.const 3840 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 4 + i32.const 18 call $~lib/rt/itcms/__new local.tee $2 - i32.const 47 + i32.const 61 i32.store local.get $2 - local.get $1 + local.get $0 + i32.const 4 + i32.add i32.store offset=4 local.get $2 i32.store @@ -7491,31 +8396,37 @@ local.get $2 i32.load call_indirect (type $0) + local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 100 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 3840 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1488 - i32.const 496 + i32.const 597 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 24 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 48 + i32.const 24 memory.fill global.get $~lib/rt/tlsf/ROOT i32.eqz @@ -7523,149 +8434,97 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.set $1 + local.get $0 i32.const 0 - i32.store + i32.store offset=4 + local.get $0 + i32.const 3904 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 10 + i32.const 19 call $~lib/rt/itcms/__new local.tee $2 - i32.const 48 + i32.const 62 i32.store local.get $2 - local.get $0 + local.get $1 i32.store offset=4 local.get $2 i32.store global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 10 + i32.const 18 call $~lib/rt/itcms/__new local.tee $3 - i32.const 49 + i32.const 63 i32.store local.get $3 - local.get $0 + local.get $1 i32.store offset=4 local.get $3 i32.store offset=4 global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $4 - i32.const 50 - i32.store - local.get $4 - local.get $0 - i32.store offset=4 - local.get $4 - i32.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $5 - i32.const 51 - i32.store - local.get $5 - local.get $0 - i32.store offset=4 - local.get $5 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $6 - i32.const 52 - i32.store - local.get $6 - local.get $0 - i32.store offset=4 - local.get $6 - i32.store offset=16 - global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $7 - i32.const 53 - i32.store - local.get $7 - local.get $0 - i32.store offset=4 - local.get $7 - i32.store offset=20 - global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=24 + i32.store offset=8 local.get $2 i32.load offset=4 global.set $$~lib/__closure_env + i32.const 4032 local.get $2 i32.load - call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=28 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 - i32.load - call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=32 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 - i32.load - call_indirect (type $2) + call_indirect (type $3) global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=36 - local.get $5 + local.get $2 + i32.store offset=12 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $5 + i32.const 4064 + local.get $2 i32.load - call_indirect (type $2) + call_indirect (type $3) global.get $~lib/memory/__stack_pointer - local.get $6 - i32.store offset=40 - local.get $6 + local.get $2 + i32.store offset=16 + local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - local.get $6 + i32.const 4096 + local.get $2 i32.load - call_indirect (type $2) + call_indirect (type $3) global.get $~lib/memory/__stack_pointer - local.get $7 - i32.store offset=44 - local.get $7 + local.get $3 + i32.store offset=20 + local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $7 + local.get $3 i32.load call_indirect (type $0) + local.set $0 global.get $~lib/memory/__stack_pointer - i32.const 48 + i32.const 24 i32.add global.set $~lib/memory/__stack_pointer - i32.const 15 - i32.ne + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=132 + local.get $0 + i32.const 4128 + call $~lib/string/String.__eq + i32.eqz if i32.const 0 i32.const 1488 - i32.const 517 + i32.const 611 i32.const 1 call $~lib/builtins/abort unreachable @@ -7675,7 +8534,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7687,56 +8546,25 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 48 + i32.const 8 call $~lib/rt/tlsf/allocateBlock local.tee $0 - i32.const 4 - i32.add - local.tee $1 - i32.const 1 - i32.store - local.get $0 - i32.const 2 - i32.store offset=8 - local.get $0 - i32.const 3 - i32.store offset=12 - local.get $0 - i32.const 4 - i32.store offset=16 - local.get $0 - i32.const 5 - i32.store offset=20 - local.get $0 - i32.const 6 - i32.store offset=24 - local.get $0 - i32.const 7 - i32.store offset=28 - local.get $0 - i32.const 8 - i32.store offset=32 - local.get $0 - i32.const 9 - i32.store offset=36 - local.get $0 - i32.const 10 - i32.store offset=40 - local.get $0 - i32.const 11 - i32.store offset=44 + i32.const 0 + i32.store offset=4 local.get $0 - i32.const 12 - i32.store offset=48 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 4 call $~lib/rt/itcms/__new local.tee $2 - i32.const 54 + i32.const 65 i32.store local.get $2 - local.get $1 + local.get $0 + i32.const 4 + i32.add i32.store offset=4 local.get $2 i32.store @@ -7753,12 +8581,12 @@ i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - i32.const 78 + i32.const 2 i32.ne if i32.const 0 i32.const 1488 - i32.const 529 + i32.const 634 i32.const 1 call $~lib/builtins/abort unreachable @@ -7768,7 +8596,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -7780,307 +8608,251 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 - i32.const 1 - i32.store - global.get $~lib/memory/__stack_pointer + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 0 + i32.store offset=8 + i32.const 0 + local.set $1 i32.const 8 - i32.const 4 + i32.const 9 call $~lib/rt/itcms/__new local.tee $2 - i32.const 55 + i32.const 66 i32.store local.get $2 local.get $0 + i32.const 4 + i32.add i32.store offset=4 + global.get $~lib/memory/__stack_pointer local.get $2 i32.store - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 - i32.load - call_indirect (type $0) global.get $~lib/memory/__stack_pointer i32.const 4 - i32.add - global.set $~lib/memory/__stack_pointer - i32.const 10 - i32.ne - if - i32.const 0 - i32.const 1488 - i32.const 539 - i32.const 1 - call $~lib/builtins/abort - unreachable - end - global.get $~lib/memory/__stack_pointer - i32.const 16 i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store - global.get $~lib/memory/__stack_pointer - i64.const 0 - i64.store offset=8 - global.get $~lib/memory/__stack_pointer - i32.const 10 - call $~lib/array/Array<%28%29=>i32>#constructor - local.tee $0 - i32.store i32.const 0 - local.set $2 - loop $for-loop|00 - local.get $2 + i32.store + loop $for-loop|016 + local.get $1 i32.const 10 i32.lt_s if global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add - local.tee $1 local.get $2 - i32.const 10 - i32.mul i32.store - i32.const 8 - i32.const 4 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 56 - i32.store - local.get $3 - local.get $1 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $0 - local.get $2 - local.get $3 - call $~lib/array/Array<%28%29=>i32>#__set local.get $2 - i32.const 1 - i32.add - local.set $2 - br $for-loop|00 - end - end - i32.const 0 - local.set $2 - i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 - i32.const 10 - i32.lt_s - if - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $0 - local.get $1 - call $~lib/array/Array<%28%29=>i32>#__get - local.tee $3 - i32.store offset=12 - local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $3 - i32.load - call_indirect (type $0) + local.get $1 local.get $2 - i32.add - local.set $2 + i32.load + call_indirect (type $3) local.get $1 i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|016 end end global.get $~lib/memory/__stack_pointer - i32.const 16 + i32.const 4 i32.add global.set $~lib/memory/__stack_pointer - local.get $2 - i32.const 450 + local.get $0 + i32.load offset=8 + global.get $~lib/memory/__stack_pointer + i32.const 4 + i32.add + global.set $~lib/memory/__stack_pointer + i32.const 45 i32.ne if i32.const 0 i32.const 1488 - i32.const 564 + i32.const 654 i32.const 1 call $~lib/builtins/abort unreachable end - global.get $~lib/memory/__stack_pointer - i32.const 44 - i32.sub - global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - i32.const 4228 - i32.lt_s - br_if $folding-inner1 - global.get $~lib/memory/__stack_pointer - i32.const 0 - i32.const 44 - memory.fill global.get $~lib/rt/tlsf/ROOT i32.eqz if call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 12 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 i32.const 0 - i32.store - global.get $~lib/memory/__stack_pointer + i32.store offset=4 + local.get $0 + i32.const 3 + i32.store offset=8 + local.get $0 + i32.const 4 + i32.store offset=12 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $2 - i32.const 57 + local.tee $1 + i32.const 67 i32.store - local.get $2 + local.get $1 local.get $0 + i32.const 4 + i32.add i32.store offset=4 - local.get $2 - i32.store + local.get $1 + global.set $closure-stress/addResult global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 58 - i32.store - local.get $3 + global.get $closure-stress/addResult + local.tee $0 + i32.store offset=168 local.get $0 - i32.store offset=4 - local.get $3 - i32.store offset=4 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=8 - local.get $3 i32.load offset=4 global.set $$~lib/__closure_env - local.get $3 + local.get $0 i32.load - call_indirect (type $2) + call_indirect (type $0) + i32.const 7 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 662 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 16 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + br_if $folding-inner1 + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store offset=8 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT i32.const 8 - i32.const 10 - call $~lib/rt/itcms/__new - local.tee $4 - i32.const 59 - i32.store - local.get $4 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + i32.const 4 + i32.add + local.set $1 local.get $0 + i32.const 0 i32.store offset=4 - local.get $4 - i32.store offset=12 - global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=16 - local.get $3 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $3 - i32.load - call_indirect (type $2) + local.get $0 + i32.const 1 + i32.store offset=8 global.get $~lib/memory/__stack_pointer - local.get $4 - i32.store offset=20 - local.get $4 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $4 - i32.load - call_indirect (type $2) + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $3 + i32.const 68 + i32.store + local.get $3 + local.get $1 + i32.store offset=4 + local.get $3 + i32.store global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 10 + i32.const 4 call $~lib/rt/itcms/__new - local.tee $5 - i32.const 60 + local.tee $4 + i32.const 69 i32.store - local.get $5 - local.get $0 + local.get $4 + local.get $1 + i32.store offset=4 + local.get $4 i32.store offset=4 - local.get $5 - i32.store offset=24 global.get $~lib/memory/__stack_pointer local.get $3 - i32.store offset=28 + i32.store offset=8 local.get $3 i32.load offset=4 global.set $$~lib/__closure_env local.get $3 i32.load - call_indirect (type $2) + call_indirect (type $0) + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 675 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer local.get $4 - i32.store offset=32 + i32.store offset=12 local.get $4 i32.load offset=4 global.set $$~lib/__closure_env local.get $4 i32.load - call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - local.get $5 - i32.store offset=36 - local.get $5 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $5 - i32.load - call_indirect (type $2) - global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=40 - local.get $2 - i32.load offset=4 - global.set $$~lib/__closure_env - local.get $2 - i32.load call_indirect (type $0) + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 677 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + i32.const 2 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 678 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 global.get $~lib/memory/__stack_pointer - i32.const 44 + i32.const 16 i32.add global.set $~lib/memory/__stack_pointer - i32.const 123 + i32.const 2 i32.ne if i32.const 0 i32.const 1488 - i32.const 585 + i32.const 682 i32.const 1 call $~lib/builtins/abort unreachable @@ -8090,7 +8862,7 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer @@ -8102,22 +8874,25 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add local.tee $0 - i32.const 3840 - i32.store + i32.const 0 + i32.store offset=4 + local.get $0 + i32.const 1 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 8 - i32.const 18 + i32.const 4 call $~lib/rt/itcms/__new local.tee $2 - i32.const 61 + i32.const 72 i32.store local.get $2 local.get $0 + i32.const 4 + i32.add i32.store offset=4 local.get $2 i32.store @@ -8130,142 +8905,227 @@ local.get $2 i32.load call_indirect (type $0) - local.set $0 global.get $~lib/memory/__stack_pointer i32.const 8 i32.add global.set $~lib/memory/__stack_pointer - global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=132 - local.get $0 - i32.const 3840 - call $~lib/string/String.__eq - i32.eqz + i32.const 111 + i32.ne if i32.const 0 i32.const 1488 - i32.const 597 + i32.const 707 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 24 - i32.sub + i32.const -64 + i32.add global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s br_if $folding-inner1 global.get $~lib/memory/__stack_pointer i32.const 0 - i32.const 24 + i32.const 64 memory.fill - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - call $~lib/rt/tlsf/initialize - end - global.get $~lib/rt/tlsf/ROOT - i32.const 4 - call $~lib/rt/tlsf/allocateBlock - i32.const 4 - i32.add + global.get $~lib/memory/__stack_pointer + i32.const 10 + call $closure-stress/makeAdderPair local.tee $0 - i32.const 3904 i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 19 - call $~lib/rt/itcms/__new - local.tee $2 - i32.const 62 - i32.store - local.get $2 local.get $0 i32.store offset=4 - local.get $2 - i32.store global.get $~lib/memory/__stack_pointer - i32.const 8 - i32.const 18 - call $~lib/rt/itcms/__new - local.tee $3 - i32.const 63 - i32.store - local.get $3 + local.get $0 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $1 + i32.store offset=8 + global.get $~lib/memory/__stack_pointer local.get $0 i32.store offset=4 - local.get $3 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $0 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=16 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 730 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=20 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=24 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + drop + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=28 + local.get $0 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $0 + i32.load + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 733 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i32.const 100 + call $closure-stress/makeAdderPair + local.tee $1 + i32.store offset=32 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 0 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $2 + i32.store offset=36 + global.get $~lib/memory/__stack_pointer + local.get $1 i32.store offset=4 global.get $~lib/memory/__stack_pointer + local.get $1 + i32.const 1 + call $~lib/array/Array<%28%29=>i32>#__get + local.tee $1 + i32.store offset=40 + global.get $~lib/memory/__stack_pointer local.get $2 - i32.store offset=8 + i32.store offset=44 local.get $2 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 4032 local.get $2 i32.load - call_indirect (type $3) + call_indirect (type $0) + drop global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=12 - local.get $2 + local.get $1 + i32.store offset=48 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + i32.const 101 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 741 + i32.const 3 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + local.get $0 + i32.store offset=52 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 4064 - local.get $2 + local.get $0 i32.load - call_indirect (type $3) + call_indirect (type $0) + i32.const 12 + i32.ne + if + i32.const 0 + i32.const 1488 + i32.const 742 + i32.const 3 + call $~lib/builtins/abort + unreachable + end global.get $~lib/memory/__stack_pointer - local.get $2 - i32.store offset=16 - local.get $2 + local.get $0 + i32.store offset=56 + local.get $0 i32.load offset=4 global.set $$~lib/__closure_env - i32.const 4096 - local.get $2 + local.get $0 i32.load - call_indirect (type $3) + call_indirect (type $0) + local.set $0 global.get $~lib/memory/__stack_pointer - local.get $3 - i32.store offset=20 - local.get $3 + local.get $1 + i32.store offset=60 + local.get $1 i32.load offset=4 global.set $$~lib/__closure_env - local.get $3 + local.get $1 i32.load call_indirect (type $0) - local.set $0 - global.get $~lib/memory/__stack_pointer - i32.const 24 + local.get $0 i32.add - global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - local.get $0 - i32.store offset=132 - local.get $0 - i32.const 4128 - call $~lib/string/String.__eq - i32.eqz + i32.const -64 + i32.sub + global.set $~lib/memory/__stack_pointer + i32.const 113 + i32.ne if i32.const 0 i32.const 1488 - i32.const 611 + i32.const 746 i32.const 1 call $~lib/builtins/abort unreachable end global.get $~lib/memory/__stack_pointer - i32.const 168 + i32.const 172 i32.add global.set $~lib/memory/__stack_pointer return end - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8279,11 +9139,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8298,17 +9158,20 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 8 + i32.const 12 call $~lib/rt/tlsf/allocateBlock local.tee $2 i32.const 4 i32.add local.tee $1 - i32.const 10 + i32.const 0 i32.store local.get $2 - i32.const 20 + i32.const 10 i32.store offset=8 + local.get $2 + i32.const 20 + i32.store offset=12 local.get $0 if global.get $~lib/memory/__stack_pointer @@ -8357,11 +9220,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8373,7 +9236,7 @@ global.get $~lib/memory/__stack_pointer global.get $$~lib/__closure_env local.tee $2 - i32.load offset=4 + i32.load offset=8 local.tee $1 i32.store offset=4 local.get $1 @@ -8385,7 +9248,7 @@ call_indirect (type $1) global.get $~lib/memory/__stack_pointer local.get $2 - i32.load + i32.load offset=4 local.tee $1 i32.store local.get $1 @@ -8405,11 +9268,11 @@ i32.sub global.set $~lib/memory/__stack_pointer global.get $~lib/memory/__stack_pointer - i32.const 4228 + i32.const 4580 i32.lt_s if - i32.const 37024 - i32.const 37072 + i32.const 37376 + i32.const 37424 i32.const 1 i32.const 1 call $~lib/builtins/abort @@ -8441,4 +9304,211 @@ global.set $~lib/memory/__stack_pointer local.get $0 ) + (func $closure-stress/testNestedClosureFunctions~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + if + i32.const 37376 + i32.const 37424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $3 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 8 + call $~lib/rt/tlsf/allocateBlock + i32.const 4 + i32.add + local.tee $0 + local.get $3 + i32.store + local.get $3 + local.get $3 + i32.load offset=4 + i32.const 1 + i32.add + i32.store offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $2 + i32.const 64 + i32.store + local.get $2 + local.get $0 + i32.store offset=4 + local.get $2 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $2 + i32.store offset=4 + local.get $2 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $2 + i32.load + call_indirect (type $0) + drop + local.get $3 + i32.load offset=4 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + if + i32.const 37376 + i32.const 37424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 16 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 100 + i32.store offset=16 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 70 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) + (func $closure-stress/testDeeplyNestedClosures~anonymous|0 (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.sub + global.set $~lib/memory/__stack_pointer + global.get $~lib/memory/__stack_pointer + i32.const 4580 + i32.lt_s + if + i32.const 37376 + i32.const 37424 + i32.const 1 + i32.const 1 + call $~lib/builtins/abort + unreachable + end + global.get $~lib/memory/__stack_pointer + i64.const 0 + i64.store + global.get $$~lib/__closure_env + local.set $0 + global.get $~lib/rt/tlsf/ROOT + i32.eqz + if + call $~lib/rt/tlsf/initialize + end + global.get $~lib/rt/tlsf/ROOT + i32.const 12 + call $~lib/rt/tlsf/allocateBlock + local.tee $1 + i32.const 4 + i32.add + local.tee $2 + local.get $0 + i32.store + local.get $1 + i32.const 10 + i32.store offset=12 + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.const 4 + call $~lib/rt/itcms/__new + local.tee $1 + i32.const 71 + i32.store + local.get $1 + local.get $2 + i32.store offset=4 + local.get $1 + i32.store + global.get $~lib/memory/__stack_pointer + local.get $1 + i32.store offset=4 + local.get $1 + i32.load offset=4 + global.set $$~lib/__closure_env + local.get $1 + i32.load + call_indirect (type $0) + global.get $~lib/memory/__stack_pointer + i32.const 8 + i32.add + global.set $~lib/memory/__stack_pointer + ) ) diff --git a/tests/compiler/closure-stress.ts b/tests/compiler/closure-stress.ts index 1c3bcb625b..bc6abf9dfc 100644 --- a/tests/compiler/closure-stress.ts +++ b/tests/compiler/closure-stress.ts @@ -610,6 +610,141 @@ function mutateStringRef(): string { } assert(mutateStringRef() == "ABCD"); +// ============================================================================= +// SECTION 12: Tests from Issue #798 Discussion +// ============================================================================= + +// Test 12.1: Nested closures (outer -> inner -> innerInner) from @dcodeIO's example +// This tests the parent environment chain - innerInner captures x from grandparent scope +function testNestedClosureFunctions(): i32 { + let x: i32 = 0; + + let inner = (): i32 => { + x += 1; + let innerInner = (): i32 => { + x += 1; // Capture from grandparent scope! + return x; + }; + innerInner(); + return x; + }; + + return inner(); // x should be 2 (incremented twice) +} +assert(testNestedClosureFunctions() == 2); + +// Test 12.2: Range callback pattern from @MaxGraey's original example +// Tests passing closures to higher-order functions with captures +function range(a: i32, b: i32, fn: (n: i32) => void): void { + for (let i = a; i < b; i++) { + fn(i); + } +} + +function testRangeWithClosure(): i32 { + let sum: i32 = 0; + let n: i32 = 10; + + range(0, n, (i: i32): void => { + sum += i; // captures sum + }); + + return sum; // 0+1+2+3+4+5+6+7+8+9 = 45 +} +assert(testRangeWithClosure() == 45); + +// Test 12.3: Return closure pattern from @jtenner's question +// function add(a, b) { return () => a + b; } +function add(a: i32, b: i32): () => i32 { + return (): i32 => a + b; +} +let addResult = add(3, 4); +assert(addResult() == 7); + +// Test 12.4: Two closures different views of same variable from @jtenner's example +// let a = 1; let b = () => a; let c = () => a += 1; +function testTwoClosuresSameVar(): i32 { + let a: i32 = 1; + let b = (): i32 => a; + let c = (): i32 => { + a += 1; + return a; + }; + + let br = b(); // 1 + assert(br == 1); + let cr = c(); // 2 + assert(cr == 2); + assert(a == 2); + + return a; +} +assert(testTwoClosuresSameVar() == 2); + +// Test 12.5: Deeply nested closure chain +// Tests multiple levels of environment parent pointers +function testDeeplyNestedClosures(): i32 { + let level1: i32 = 1; + + let fn1 = (): i32 => { + let level2: i32 = 10; + + let fn2 = (): i32 => { + let level3: i32 = 100; + + let fn3 = (): i32 => { + return level1 + level2 + level3; // captures from 3 levels up! + }; + + return fn3(); + }; + + return fn2(); + }; + + return fn1(); // 1 + 10 + 100 = 111 +} +assert(testDeeplyNestedClosures() == 111); + +// Test 12.6: Closure escapes outer function and is called later +// Tests that environment stays alive after outer function returns +function makeAdderPair(initial: i32): (() => i32)[] { + let value = initial; + let arr = new Array<() => i32>(2); + + arr[0] = (): i32 => { + value += 1; + return value; + }; + + arr[1] = (): i32 => value; + + return arr; +} + +function testClosureEscapesFunction(): i32 { + let pair = makeAdderPair(10); + let increment = pair[0]; + let getValue = pair[1]; + + assert(getValue() == 10); + increment(); // 11 + increment(); // 12 + assert(getValue() == 12); + + // Create another independent pair + let pair2 = makeAdderPair(100); + let increment2 = pair2[0]; + let getValue2 = pair2[1]; + + increment2(); // 101 + assert(getValue2() == 101); + assert(getValue() == 12); // Original pair unchanged + + return getValue() + getValue2(); // 12 + 101 = 113 +} +assert(testClosureEscapesFunction() == 113); + // ============================================================================= // Final assertion to confirm all tests passed // ============================================================================= diff --git a/tests/compiler/closure.debug.wat b/tests/compiler/closure.debug.wat index 0c6560c2d2..2085063651 100644 --- a/tests/compiler/closure.debug.wat +++ b/tests/compiler/closure.debug.wat @@ -61,7 +61,7 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $~lib/rt/itcms/Object#set:nextWithColor (param $this i32) (param $nextWithColor i32) local.get $this @@ -2266,12 +2266,15 @@ (func $closure/testCaptureParam (param $x i32) (result i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $x + i32.const 0 i32.store + local.get $$env + local.get $x + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2290,18 +2293,21 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure/testCaptureVar (result i32) (local $x i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 100 + i32.const 0 i32.store + local.get $$env + i32.const 100 + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2320,18 +2326,21 @@ global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure/testCaptureLet (result i32) (local $x i32) (local $$env i32) (local $2 i32) - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - i32.const 200 + i32.const 0 i32.store + local.get $$env + i32.const 200 + i32.store offset=4 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2351,47 +2360,50 @@ local.set $$closureEnv local.get $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure/testClosureWrite~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $closure/testMultipleCaptures~anonymous|0 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load - local.get $$closureEnv i32.load offset=4 - i32.add local.get $$closureEnv i32.load offset=8 i32.add + local.get $$closureEnv + i32.load offset=12 + i32.add ) (func $closure/testMultipleCaptures (param $a i32) (param $b i32) (result i32) (local $$env i32) (local $c i32) (local $4 i32) - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env - local.get $a + i32.const 0 i32.store local.get $$env - local.get $b + local.get $a i32.store offset=4 local.get $$env - i32.const 10 + local.get $b i32.store offset=8 + local.get $$env + i32.const 10 + i32.store offset=12 i32.const 8 i32.const 4 call $~lib/rt/itcms/__new @@ -2411,14 +2423,14 @@ local.set $$closureEnv local.get $$closureEnv local.get $x - i32.store + i32.store offset=4 ) (func $closure/testSharedEnvironment~anonymous|1 (result i32) (local $$closureEnv i32) global.get $$~lib/__closure_env local.set $$closureEnv local.get $$closureEnv - i32.load + i32.load offset=4 ) (func $start:closure (local $0 i32) @@ -2794,12 +2806,15 @@ i32.const 0 i32.const 24 memory.fill - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 5 @@ -2905,12 +2920,15 @@ global.get $~lib/memory/__stack_pointer i64.const 0 i64.store offset=8 - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env local.get $$env i32.const 0 i32.store + local.get $$env + i32.const 0 + i32.store offset=4 global.get $~lib/memory/__stack_pointer i32.const 8 i32.const 6 diff --git a/tests/compiler/closure.release.wat b/tests/compiler/closure.release.wat index d4e33ae1dc..4eed63f75f 100644 --- a/tests/compiler/closure.release.wat +++ b/tests/compiler/closure.release.wat @@ -60,7 +60,7 @@ (start $~start) (func $closure/testCaptureParam~anonymous|0 (result i32) global.get $$~lib/__closure_env - i32.load + i32.load offset=4 ) (func $~lib/rt/itcms/visitRoots (local $0 i32) @@ -1544,27 +1544,27 @@ global.get $$~lib/__closure_env local.tee $0 local.get $0 - i32.load + i32.load offset=4 i32.const 1 i32.add - i32.store + i32.store offset=4 ) (func $closure/testMultipleCaptures~anonymous|0 (result i32) (local $0 i32) global.get $$~lib/__closure_env local.tee $0 - i32.load offset=8 - local.get $0 - i32.load + i32.load offset=12 local.get $0 i32.load offset=4 + local.get $0 + i32.load offset=8 i32.add i32.add ) (func $closure/testSharedEnvironment~anonymous|0 (param $0 i32) global.get $$~lib/__closure_env i32.const 50 - i32.store + i32.store offset=4 ) (func $start:closure (local $0 i32) @@ -1624,22 +1624,26 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 - i32.const 42 + local.tee $1 + i32.const 0 i32.store + local.get $0 + i32.const 42 + i32.store offset=8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 1 i32.store - local.get $1 local.get $0 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $0 global.set $closure/fn1 global.get $~lib/memory/__stack_pointer global.get $closure/fn1 @@ -1667,22 +1671,26 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 - i32.const 100 + local.tee $1 + i32.const 0 i32.store + local.get $0 + i32.const 100 + i32.store offset=8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 2 i32.store - local.get $1 local.get $0 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $0 global.set $closure/fn2 global.get $~lib/memory/__stack_pointer global.get $closure/fn2 @@ -1710,22 +1718,26 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 - i32.const 200 + local.tee $1 + i32.const 0 i32.store + local.get $0 + i32.const 200 + i32.store offset=8 i32.const 4 call $~lib/rt/itcms/__new - local.tee $1 + local.tee $0 i32.const 3 i32.store - local.get $1 local.get $0 - i32.store offset=4 local.get $1 + i32.store offset=4 + local.get $0 global.set $closure/fn3 global.get $~lib/memory/__stack_pointer global.get $closure/fn3 @@ -1765,13 +1777,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 5 call $~lib/rt/itcms/__new @@ -1779,7 +1795,7 @@ i32.const 4 i32.store local.get $2 - local.get $0 + local.get $1 i32.store offset=4 local.get $2 i32.store @@ -1790,7 +1806,7 @@ i32.const 5 i32.store local.get $3 - local.get $0 + local.get $1 i32.store offset=4 local.get $3 i32.store offset=4 @@ -1850,20 +1866,23 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 12 + i32.const 16 call $~lib/rt/tlsf/allocateBlock local.tee $0 i32.const 4 i32.add local.tee $1 - i32.const 1 + i32.const 0 i32.store local.get $0 - i32.const 2 + i32.const 1 i32.store offset=8 local.get $0 - i32.const 10 + i32.const 2 i32.store offset=12 + local.get $0 + i32.const 10 + i32.store offset=16 i32.const 4 call $~lib/rt/itcms/__new local.tee $0 @@ -1914,13 +1933,17 @@ call $~lib/rt/tlsf/initialize end global.get $~lib/rt/tlsf/ROOT - i32.const 4 + i32.const 8 call $~lib/rt/tlsf/allocateBlock + local.tee $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 i32.const 0 i32.store + local.get $0 + i32.const 0 + i32.store offset=8 global.get $~lib/memory/__stack_pointer i32.const 6 call $~lib/rt/itcms/__new @@ -1928,7 +1951,7 @@ i32.const 7 i32.store local.get $2 - local.get $0 + local.get $1 i32.store offset=4 local.get $2 i32.store @@ -1939,7 +1962,7 @@ i32.const 8 i32.store local.get $3 - local.get $0 + local.get $1 i32.store offset=4 local.get $3 i32.store offset=4 From c693621e5f16acebca0e642f4229ce353ca0f670 Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:07:00 -0500 Subject: [PATCH 10/13] Add Anakun to NOTICE contributors list Updated the NOTICE file to include Anakun as a contributor. --- NOTICE | 1 + 1 file changed, 1 insertion(+) diff --git a/NOTICE b/NOTICE index 14d821345c..f759c40617 100644 --- a/NOTICE +++ b/NOTICE @@ -62,6 +62,7 @@ under the licensing terms detailed in LICENSE: * Kam Chehresa * Mopsgamer <79159094+Mopsgamer@users.noreply.github.com> * EDM115 +* Anakun Portions of this software are derived from third-party works licensed under the following terms: From fdc21ce83ee2f89abbf9e5f7ad9f0c4e14a29a0d Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:15:47 -0500 Subject: [PATCH 11/13] Handle 'this' capture in closures and methods Adds logic to properly capture and reference 'this' in closures and methods, ensuring 'this' is stored in the closure environment when needed. Updates compiler and resolver to support lookup and environment slot assignment for captured 'this', improving closure support for methods referencing 'this'. --- src/compiler.ts | 95 +++++++++++++++++++++++++++++++++++++++++++++++-- src/resolver.ts | 10 ++++++ 2 files changed, 102 insertions(+), 3 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index cfc14027c4..f339e83aa9 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1819,6 +1819,36 @@ export class Compiler extends DiagnosticEmitter { } } } + + // Also check if 'this' is captured (for methods) + if (preCapturedNames.has(CommonNames.this_)) { + let thisLocal = flow.lookupLocal(CommonNames.this_); + if (thisLocal && !thisLocal.isCaptured) { + thisLocal.isCaptured = true; + if (!instance.capturedLocals) { + instance.capturedLocals = new Map(); + } + if (!instance.capturedLocals.has(thisLocal)) { + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; + for (let _keys = Map_keys(instance.capturedLocals), j = 0, m = _keys.length; j < m; ++j) { + let existingLocal = _keys[j]; + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + let typeSize = thisLocal.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); + thisLocal.envSlotIndex = currentOffset; + thisLocal.envOwner = instance; + instance.capturedLocals.set(thisLocal, thisLocal.envSlotIndex); + } + if (!instance.envLocal) { + let envLocal = flow.addScopedLocal("$env", this.options.usizeType); + instance.envLocal = envLocal; + } + } + } } // For closures (functions that capture from outer scope), create a local to cache @@ -7655,6 +7685,36 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.This: { + // Handle 'this' capture - look it up in outer flow + let local = outerFlow.lookupLocal(CommonNames.this_); + if (!local) { + local = outerFlow.lookupLocalInOuter(CommonNames.this_); + } + if (local && !captures.has(local)) { + local.isCaptured = true; + if (!local.envOwner) { + local.envOwner = local.parent; + } + if (local.envSlotIndex >= 0) { + captures.set(local, local.envSlotIndex); + } else { + let ptrSize = this.options.usizeType.byteSize; + let currentOffset = ptrSize; + for (let _keys = Map_keys(captures), idx = 0, cnt = _keys.length; idx < cnt; ++idx) { + let existingLocal = _keys[idx]; + let endOfSlot = existingLocal.envSlotIndex + existingLocal.type.byteSize; + if (endOfSlot > currentOffset) currentOffset = endOfSlot; + } + let typeSize = local.type.byteSize; + let align = typeSize; + currentOffset = (currentOffset + align - 1) & ~(align - 1); + local.envSlotIndex = currentOffset; + captures.set(local, local.envSlotIndex); + } + } + break; + } case NodeKind.Function: { // For nested function expressions, scan their body but add their params to inner names let funcExpr = node; @@ -8166,6 +8226,17 @@ export class Compiler extends DiagnosticEmitter { } break; } + case NodeKind.This: { + // Handle 'this' capture - check if outer function has a 'this' local + let thisLocal = outerFlow.lookupLocal(CommonNames.this_); + if (!thisLocal) { + thisLocal = outerFlow.lookupLocalInOuter(CommonNames.this_); + } + if (thisLocal) { + capturedNames.set(CommonNames.this_, null); + } + break; + } case NodeKind.Block: { let block = node; for (let i = 0, k = block.statements.length; i < k; i++) { @@ -8602,9 +8673,11 @@ export class Compiler extends DiagnosticEmitter { let slotOffset = local.envSlotIndex; let localType = local.type; - // Only copy if this is a parameter (index in parameter range) - // Local variables will be initialized when their declaration is compiled - if (local.index >= paramStartIndex && local.index < paramEndIndex) { + // Copy parameters and 'this' to the environment + // Local variables (var/let) will be initialized later when their declaration is compiled + let isParameter = local.index >= paramStartIndex && local.index < paramEndIndex; + let isThis = hasThis && local.index == 0; // 'this' is at index 0 in methods + if (isParameter || isThis) { stmts.push( module.store( localType.byteSize, @@ -8679,6 +8752,22 @@ export class Compiler extends DiagnosticEmitter { } case NodeKind.This: { let thisType = sourceFunction.signature.thisType; + + // Check if 'this' is captured from an outer scope (closure case) + if (!thisType && this.options.hasFeature(Feature.Closures)) { + // Look for 'this' in outer flow - it might be captured + let thisLocal = flow.lookupLocal(CommonNames.this_); + if (!thisLocal) { + thisLocal = flow.lookupLocalInOuter(CommonNames.this_); + } + if (thisLocal && thisLocal.isCaptured && thisLocal.envSlotIndex >= 0) { + // 'this' is captured - load from closure environment + flow.set(FlowFlags.AccessesThis); + this.currentType = thisLocal.type; + return this.compileClosureLoad(thisLocal, expression); + } + } + if (!thisType) { this.error( DiagnosticCode._this_cannot_be_referenced_in_current_location, diff --git a/src/resolver.ts b/src/resolver.ts index 0823838fa2..ffac0dba34 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -2175,6 +2175,16 @@ export class Resolver extends DiagnosticEmitter { return thisLocal; } } + // Check for captured 'this' in closures - look up in outer flow chain + let thisLocal = ctxFlow.lookupLocal(CommonNames.this_); + if (!thisLocal) { + thisLocal = ctxFlow.lookupLocalInOuter(CommonNames.this_); + } + if (thisLocal) { + this.currentThisExpression = null; + this.currentElementExpression = null; + return thisLocal; + } let parent = ctxFlow.sourceFunction.parent; if (parent) { this.currentThisExpression = null; From 001873aaf8c2065d219a38098ac613e2ca7dc0fd Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:21:54 -0500 Subject: [PATCH 12/13] Refactor closures to capture 'this' directly Removed unnecessary 'self = this' assignments in all closure-returning methods, replacing references to 'self' with 'this'. This simplifies the code and improves readability by leveraging direct 'this' capture in arrow functions. --- tests/compiler/closure-class.ts | 214 +++++++++++++------------------- 1 file changed, 84 insertions(+), 130 deletions(-) diff --git a/tests/compiler/closure-class.ts b/tests/compiler/closure-class.ts index 67858e7258..0aaeff5fca 100644 --- a/tests/compiler/closure-class.ts +++ b/tests/compiler/closure-class.ts @@ -3,7 +3,7 @@ // ============================================================================= // ============================================================================= -// SECTION 1: Basic Method Closures Capturing "this" via local variable +// SECTION 1: Basic Method Closures Capturing "this" directly // ============================================================================= class Counter { @@ -14,9 +14,8 @@ class Counter { } getIncrementClosure(): () => void { - let self = this; return (): void => { - self.count++; + this.count++; }; } @@ -25,8 +24,7 @@ class Counter { } getCountClosure(): () => i32 { - let self = this; - return (): i32 => self.count; + return (): i32 => this.count; } } @@ -74,19 +72,17 @@ class BankAccount { } getDepositClosure(): (amount: i32) => void { - let self = this; return (amount: i32): void => { - self.balance += amount; - self.transactionCount++; + this.balance += amount; + this.transactionCount++; }; } getWithdrawClosure(): (amount: i32) => bool { - let self = this; return (amount: i32): bool => { - if (self.balance >= amount) { - self.balance -= amount; - self.transactionCount++; + if (this.balance >= amount) { + this.balance -= amount; + this.transactionCount++; return true; } return false; @@ -94,13 +90,11 @@ class BankAccount { } getBalanceClosure(): () => i32 { - let self = this; - return (): i32 => self.balance; + return (): i32 => this.balance; } getTransactionCountClosure(): () => i32 { - let self = this; - return (): i32 => self.transactionCount; + return (): i32 => this.transactionCount; } } @@ -138,17 +132,16 @@ class Calculator { result: i32 = 0; getOperationClosure(operand: i32, operation: i32): () => i32 { - // Captures both 'self' (this) and parameters 'operand' and 'operation' - let self = this; + // Captures both 'this' and parameters 'operand' and 'operation' return (): i32 => { if (operation == 0) { // add - self.result += operand; + this.result += operand; } else if (operation == 1) { // subtract - self.result -= operand; + this.result -= operand; } else if (operation == 2) { // multiply - self.result *= operand; + this.result *= operand; } - return self.result; + return this.result; }; } @@ -186,14 +179,12 @@ class Inner { } getValueClosure(): () => i32 { - let self = this; - return (): i32 => self.value; + return (): i32 => this.value; } getSetterClosure(): (v: i32) => void { - let self = this; return (v: i32): void => { - self.value = v; + this.value = v; }; } } @@ -208,15 +199,13 @@ class Outer { } getComputeClosure(): () => i32 { - // Captures self, which has access to inner - let self = this; - return (): i32 => self.inner.value * self.multiplier; + // Captures this, which has access to inner + return (): i32 => this.inner.value * this.multiplier; } getInnerSetterClosure(): (v: i32) => void { - let self = this; return (v: i32): void => { - self.inner.value = v; + this.inner.value = v; }; } } @@ -250,14 +239,12 @@ class Animal { } getAgeClosure(): () => i32 { - let self = this; - return (): i32 => self.age; + return (): i32 => this.age; } getAgeIncrementClosure(): () => void { - let self = this; return (): void => { - self.age++; + this.age++; }; } } @@ -271,13 +258,11 @@ class Dog extends Animal { } getBreedClosure(): () => string { - let self = this; - return (): string => self.breed; + return (): string => this.breed; } getFullInfoClosure(): () => string { - let self = this; - return (): string => self.name + " (" + self.breed + ")"; + return (): string => this.name + " (" + this.breed + ")"; } } @@ -327,11 +312,10 @@ class DataProcessor { sum: i32 = 0; getProcessorClosure(): (data: i32) => void { - let self = this; return (data: i32): void => { - self.processedCount++; - self.lastValue = data; - self.sum += data; + this.processedCount++; + this.lastValue = data; + this.sum += data; }; } } @@ -370,32 +354,28 @@ class QueryBuilder { private whereClause: string = ""; getSelectClosure(): (fields: string) => void { - let self = this; return (fields: string): void => { - self.selectFields = fields; + this.selectFields = fields; }; } getFromClosure(): (table: string) => void { - let self = this; return (table: string): void => { - self.tableName = table; + this.tableName = table; }; } getWhereClosure(): (clause: string) => void { - let self = this; return (clause: string): void => { - self.whereClause = clause; + this.whereClause = clause; }; } getBuildClosure(): () => string { - let self = this; return (): string => { - let query = "SELECT " + self.selectFields + " FROM " + self.tableName; - if (self.whereClause.length > 0) { - query += " WHERE " + self.whereClause; + let query = "SELECT " + this.selectFields + " FROM " + this.tableName; + if (this.whereClause.length > 0) { + query += " WHERE " + this.whereClause; } return query; }; @@ -430,10 +410,9 @@ class StateMachine { private state: i32 = 0; // 0=idle, 1=running, 2=paused, 3=stopped getStartClosure(): () => bool { - let self = this; return (): bool => { - if (self.state == 0 || self.state == 2) { - self.state = 1; + if (this.state == 0 || this.state == 2) { + this.state = 1; return true; } return false; @@ -441,10 +420,9 @@ class StateMachine { } getPauseClosure(): () => bool { - let self = this; return (): bool => { - if (self.state == 1) { - self.state = 2; + if (this.state == 1) { + this.state = 2; return true; } return false; @@ -452,10 +430,9 @@ class StateMachine { } getStopClosure(): () => bool { - let self = this; return (): bool => { - if (self.state == 1 || self.state == 2) { - self.state = 3; + if (this.state == 1 || this.state == 2) { + this.state = 3; return true; } return false; @@ -463,15 +440,13 @@ class StateMachine { } getResetClosure(): () => void { - let self = this; return (): void => { - self.state = 0; + this.state = 0; }; } getStateClosure(): () => i32 { - let self = this; - return (): i32 => self.state; + return (): i32 => this.state; } } @@ -523,26 +498,23 @@ class Observable { } getSubscribeClosure(): (observer: (oldVal: i32, newVal: i32) => void) => void { - let self = this; return (observer: (oldVal: i32, newVal: i32) => void): void => { - self.observers.push(observer); + this.observers.push(observer); }; } getSetClosure(): (newValue: i32) => void { - let self = this; return (newValue: i32): void => { - let oldValue = self.value; - self.value = newValue; - for (let i = 0; i < self.observers.length; i++) { - self.observers[i](oldValue, newValue); + let oldValue = this.value; + this.value = newValue; + for (let i = 0; i < this.observers.length; i++) { + this.observers[i](oldValue, newValue); } }; } getGetClosure(): () => i32 { - let self = this; - return (): i32 => self.value; + return (): i32 => this.value; } } @@ -552,16 +524,14 @@ class ObserverState { totalDiff: i32 = 0; getCountObserver(): (oldVal: i32, newVal: i32) => void { - let self = this; return (oldVal: i32, newVal: i32): void => { - self.changeCount++; + this.changeCount++; }; } getDiffObserver(): (oldVal: i32, newVal: i32) => void { - let self = this; return (oldVal: i32, newVal: i32): void => { - self.totalDiff += newVal - oldVal; + this.totalDiff += newVal - oldVal; }; } } @@ -603,22 +573,19 @@ class Box { } getMapClosure(): (fn: (v: i32) => i32) => void { - let self = this; return (fn: (v: i32) => i32): void => { - self.value = fn(self.value); + this.value = fn(this.value); }; } getFlatMapClosure(): (fn: (v: i32) => Box) => Box { - let self = this; return (fn: (v: i32) => Box): Box => { - return fn(self.value); + return fn(this.value); }; } getValueClosure(): () => i32 { - let self = this; - return (): i32 => self.value; + return (): i32 => this.value; } } @@ -654,28 +621,25 @@ assert(testBoxFlatMap() == 50); class ChainableCounter { count: i32 = 0; - // Returns a closure that returns self for chaining + // Returns a closure that returns this for chaining getAddClosure(amount: i32): () => ChainableCounter { - let self = this; return (): ChainableCounter => { - self.count += amount; - return self; + this.count += amount; + return this; }; } getMultiplyClosure(factor: i32): () => ChainableCounter { - let self = this; return (): ChainableCounter => { - self.count *= factor; - return self; + this.count *= factor; + return this; }; } getResetClosure(): () => ChainableCounter { - let self = this; return (): ChainableCounter => { - self.count = 0; - return self; + this.count = 0; + return this; }; } } @@ -707,23 +671,21 @@ class Task { private callbacks: Array<(result: i32) => void> = new Array<(result: i32) => void>(); getThenClosure(): (callback: (result: i32) => void) => void { - let self = this; return (callback: (result: i32) => void): void => { - if (self.completed) { - callback(self.result); + if (this.completed) { + callback(this.result); } else { - self.callbacks.push(callback); + this.callbacks.push(callback); } }; } getCompleteClosure(): (result: i32) => void { - let self = this; return (result: i32): void => { - self.completed = true; - self.result = result; - for (let i = 0; i < self.callbacks.length; i++) { - self.callbacks[i](result); + this.completed = true; + this.result = result; + for (let i = 0; i < this.callbacks.length; i++) { + this.callbacks[i](result); } }; } @@ -784,10 +746,9 @@ class Resource { private useCount: i32 = 0; getAcquireClosure(): () => bool { - let self = this; return (): bool => { - if (!self.acquired) { - self.acquired = true; + if (!this.acquired) { + this.acquired = true; return true; } return false; @@ -795,10 +756,9 @@ class Resource { } getReleaseClosure(): () => bool { - let self = this; return (): bool => { - if (self.acquired) { - self.acquired = false; + if (this.acquired) { + this.acquired = false; return true; } return false; @@ -806,10 +766,9 @@ class Resource { } getUseClosure(): (action: () => i32) => i32 { - let self = this; return (action: () => i32): i32 => { - if (self.acquired) { - self.useCount++; + if (this.acquired) { + this.useCount++; return action(); } return -1; // Error: not acquired @@ -871,11 +830,10 @@ class TreeNode { } getSumClosure(): () => i32 { - let self = this; return (): i32 => { - let sum = self.value; - for (let i = 0; i < self.children.length; i++) { - let childSum = self.children[i].getSumClosure(); + let sum = this.value; + for (let i = 0; i < this.children.length; i++) { + let childSum = this.children[i].getSumClosure(); sum += childSum(); } return sum; @@ -883,14 +841,13 @@ class TreeNode { } getDepthClosure(): () => i32 { - let self = this; return (): i32 => { - if (self.children.length == 0) { + if (this.children.length == 0) { return 1; } let maxChildDepth: i32 = 0; - for (let i = 0; i < self.children.length; i++) { - let childDepth = self.children[i].getDepthClosure(); + for (let i = 0; i < this.children.length; i++) { + let childDepth = this.children[i].getDepthClosure(); let d = childDepth(); if (d > maxChildDepth) { maxChildDepth = d; @@ -947,29 +904,26 @@ class Range { } getHasNextClosure(): () => bool { - let self = this; return (): bool => { - if (self.step > 0) { - return self.current < self.endVal; + if (this.step > 0) { + return this.current < this.endVal; } else { - return self.current > self.endVal; + return this.current > this.endVal; } }; } getNextClosure(): () => i32 { - let self = this; return (): i32 => { - let value = self.current; - self.current += self.step; + let value = this.current; + this.current += this.step; return value; }; } getResetClosure(start: i32): () => void { - let self = this; return (): void => { - self.current = start; + this.current = start; }; } } From d1ce5c9feff35d07cb316ebbc81a25198666750d Mon Sep 17 00:00:00 2001 From: BlobMaster41 <96896824+BlobMaster41@users.noreply.github.com> Date: Wed, 10 Dec 2025 23:26:20 -0500 Subject: [PATCH 13/13] Recompiled tests --- tests/compiler/closure-class.debug.wat | 585 +++++++++++------------ tests/compiler/closure-class.release.wat | 132 ++--- tests/compiler/closure-class.ts | 2 +- tests/compiler/closure-stress.ts | 2 +- 4 files changed, 340 insertions(+), 381 deletions(-) diff --git a/tests/compiler/closure-class.debug.wat b/tests/compiler/closure-class.debug.wat index 4a6ff8917e..8d9d00637e 100644 --- a/tests/compiler/closure-class.debug.wat +++ b/tests/compiler/closure-class.debug.wat @@ -2325,9 +2325,8 @@ i32.load ) (func $closure-class/Counter#getIncrementClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2340,20 +2339,19 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 1 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Counter#getCountClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2366,14 +2364,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 2 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/BankAccount#set:balance (param $this i32) (param $balance i32) @@ -2395,9 +2393,8 @@ i32.load offset=4 ) (func $closure-class/BankAccount#getDepositClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2410,20 +2407,19 @@ i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 3 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/BankAccount#getWithdrawClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2436,20 +2432,19 @@ i32.const 8 i32.const 9 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 4 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/BankAccount#getBalanceClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2462,20 +2457,19 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 5 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/BankAccount#getTransactionCountClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2488,14 +2482,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 6 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Calculator#set:result (param $this i32) (param $result i32) @@ -2509,8 +2503,7 @@ ) (func $closure-class/Calculator#getOperationClosure (param $this i32) (param $operand i32) (param $operation i32) (result i32) (local $$env i32) - (local $self i32) - (local $5 i32) + (local $4 i32) i32.const 16 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2529,14 +2522,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $5 - local.get $5 + local.set $4 + local.get $4 i32.const 7 i32.store - local.get $5 + local.get $4 local.get $$env i32.store offset=4 - local.get $5 + local.get $4 return ) (func $closure-class/Inner#set:value (param $this i32) (param $value i32) @@ -2639,9 +2632,8 @@ i32.load offset=4 ) (func $closure-class/Outer#getComputeClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2654,20 +2646,19 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 8 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Outer#getInnerSetterClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2680,14 +2671,14 @@ i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 9 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Animal#set:name (param $this i32) (param $name i32) @@ -2718,9 +2709,8 @@ i32.load offset=4 ) (func $closure-class/Animal#getAgeClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2733,20 +2723,19 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 10 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Animal#getAgeIncrementClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2759,14 +2748,14 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 11 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Dog#get:breed (param $this i32) (result i32) @@ -2774,9 +2763,8 @@ i32.load offset=8 ) (func $closure-class/Dog#getBreedClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2789,14 +2777,14 @@ i32.const 8 i32.const 15 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 12 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $~lib/rt/common/OBJECT#get:rtSize (param $this i32) (result i32) @@ -2973,9 +2961,8 @@ i32.load offset=8 ) (func $closure-class/DataProcessor#getProcessorClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -2988,14 +2975,14 @@ i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 13 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/EventEmitter#get:listeners (param $this i32) (result i32) @@ -3100,9 +3087,8 @@ call $~lib/rt/itcms/__link ) (func $closure-class/QueryBuilder#getSelectClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3115,20 +3101,19 @@ i32.const 8 i32.const 20 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 14 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/QueryBuilder#getFromClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3141,20 +3126,19 @@ i32.const 8 i32.const 20 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 15 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/QueryBuilder#getWhereClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3167,14 +3151,14 @@ i32.const 8 i32.const 20 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 16 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/QueryBuilder#get:selectFields (param $this i32) (result i32) @@ -3190,9 +3174,8 @@ i32.load offset=8 ) (func $closure-class/QueryBuilder#getBuildClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3205,14 +3188,14 @@ i32.const 8 i32.const 15 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 17 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/StateMachine#set:state (param $this i32) (param $state i32) @@ -3225,9 +3208,8 @@ i32.load ) (func $closure-class/StateMachine#getStartClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3240,20 +3222,19 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 18 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/StateMachine#getPauseClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3266,20 +3247,19 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 19 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/StateMachine#getStopClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3292,20 +3272,19 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 20 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/StateMachine#getResetClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3318,20 +3297,19 @@ i32.const 8 i32.const 5 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 21 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/StateMachine#getStateClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3344,14 +3322,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 22 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Observable#set:value (param $this i32) (param $value i32) @@ -3405,9 +3383,8 @@ i32.load offset=4 ) (func $closure-class/Observable#getSubscribeClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3420,14 +3397,14 @@ i32.const 8 i32.const 25 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 23 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Observable#get:value (param $this i32) (result i32) @@ -3435,9 +3412,8 @@ i32.load ) (func $closure-class/Observable#getSetClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3450,20 +3426,19 @@ i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 24 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Observable#getGetClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3476,14 +3451,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 25 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/ObserverState#set:changeCount (param $this i32) (param $changeCount i32) @@ -3501,9 +3476,8 @@ i32.load ) (func $closure-class/ObserverState#getCountObserver (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3516,14 +3490,14 @@ i32.const 8 i32.const 27 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 26 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/ObserverState#get:totalDiff (param $this i32) (result i32) @@ -3531,9 +3505,8 @@ i32.load offset=4 ) (func $closure-class/ObserverState#getDiffObserver (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3546,14 +3519,14 @@ i32.const 8 i32.const 27 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 27 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Box#set:value (param $this i32) (param $value i32) @@ -3566,9 +3539,8 @@ i32.load ) (func $closure-class/Box#getMapClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3581,20 +3553,19 @@ i32.const 8 i32.const 29 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 28 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Box#getValueClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3607,14 +3578,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 29 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/testBoxMap~anonymous|0 (param $v i32) (result i32) @@ -3633,9 +3604,8 @@ i32.mul ) (func $closure-class/Box#getFlatMapClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3648,14 +3618,14 @@ i32.const 8 i32.const 31 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 33 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/testBoxFlatMap~anonymous|0 (param $v i32) (result i32) @@ -3676,8 +3646,7 @@ ) (func $closure-class/ChainableCounter#getAddClosure (param $this i32) (param $amount i32) (result i32) (local $$env i32) - (local $self i32) - (local $4 i32) + (local $3 i32) i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3693,20 +3662,19 @@ i32.const 8 i32.const 34 call $~lib/rt/itcms/__new - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.const 35 i32.store - local.get $4 + local.get $3 local.get $$env i32.store offset=4 - local.get $4 + local.get $3 return ) (func $closure-class/ChainableCounter#getMultiplyClosure (param $this i32) (param $factor i32) (result i32) (local $$env i32) - (local $self i32) - (local $4 i32) + (local $3 i32) i32.const 12 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3722,14 +3690,14 @@ i32.const 8 i32.const 34 call $~lib/rt/itcms/__new - local.set $4 - local.get $4 + local.set $3 + local.get $3 i32.const 36 i32.store - local.get $4 + local.get $3 local.get $$env i32.store offset=4 - local.get $4 + local.get $3 return ) (func $closure-class/Task#set:completed (param $this i32) (param $completed i32) @@ -3764,9 +3732,8 @@ i32.load offset=8 ) (func $closure-class/Task#getThenClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3779,20 +3746,19 @@ i32.const 8 i32.const 36 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 37 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Task#getCompleteClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3805,14 +3771,14 @@ i32.const 8 i32.const 8 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 38 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/testTaskCallbacks~anonymous|0 (param $result i32) @@ -3848,9 +3814,8 @@ i32.load8_u ) (func $closure-class/Resource#getAcquireClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3863,20 +3828,19 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 41 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Resource#getReleaseClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3889,14 +3853,14 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 42 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Resource#get:useCount (param $this i32) (result i32) @@ -3904,9 +3868,8 @@ i32.load offset=4 ) (func $closure-class/Resource#getUseClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -3919,14 +3882,14 @@ i32.const 8 i32.const 38 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 43 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/testResourceManagement~anonymous|0 (result i32) @@ -3999,9 +3962,8 @@ i32.load ) (func $closure-class/TreeNode#getSumClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -4014,20 +3976,19 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 49 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/TreeNode#getDepthClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -4040,14 +4001,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 50 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Range#set:current (param $this i32) (param $current i32) @@ -4078,9 +4039,8 @@ i32.load offset=4 ) (func $closure-class/Range#getHasNextClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -4093,20 +4053,19 @@ i32.const 8 i32.const 22 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 51 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $closure-class/Range#getNextClosure (param $this i32) (result i32) - (local $self i32) (local $$env i32) - (local $3 i32) + (local $2 i32) i32.const 8 call $~lib/rt/tlsf/__alloc local.set $$env @@ -4119,14 +4078,14 @@ i32.const 8 i32.const 6 call $~lib/rt/itcms/__new - local.set $3 - local.get $3 + local.set $2 + local.get $2 i32.const 52 i32.store - local.get $3 + local.get $2 local.get $$env i32.store offset=4 - local.get $3 + local.get $2 return ) (func $start:closure-class @@ -4154,7 +4113,7 @@ if i32.const 0 i32.const 496 - i32.const 45 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable @@ -4166,7 +4125,7 @@ if i32.const 0 i32.const 496 - i32.const 62 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable @@ -4178,7 +4137,7 @@ if i32.const 0 i32.const 496 - i32.const 131 + i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable @@ -4190,7 +4149,7 @@ if i32.const 0 i32.const 496 - i32.const 175 + i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable @@ -4202,7 +4161,7 @@ if i32.const 0 i32.const 496 - i32.const 237 + i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable @@ -4214,7 +4173,7 @@ if i32.const 0 i32.const 496 - i32.const 300 + i32.const 285 i32.const 1 call $~lib/builtins/abort unreachable @@ -4226,7 +4185,7 @@ if i32.const 0 i32.const 496 - i32.const 361 + i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable @@ -4238,7 +4197,7 @@ if i32.const 0 i32.const 496 - i32.const 423 + i32.const 403 i32.const 1 call $~lib/builtins/abort unreachable @@ -4250,7 +4209,7 @@ if i32.const 0 i32.const 496 - i32.const 511 + i32.const 486 i32.const 1 call $~lib/builtins/abort unreachable @@ -4262,7 +4221,7 @@ if i32.const 0 i32.const 496 - i32.const 592 + i32.const 562 i32.const 1 call $~lib/builtins/abort unreachable @@ -4274,7 +4233,7 @@ if i32.const 0 i32.const 496 - i32.const 637 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable @@ -4286,7 +4245,7 @@ if i32.const 0 i32.const 496 - i32.const 648 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable @@ -4298,7 +4257,7 @@ if i32.const 0 i32.const 496 - i32.const 698 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable @@ -4310,7 +4269,7 @@ if i32.const 0 i32.const 496 - i32.const 758 + i32.const 720 i32.const 1 call $~lib/builtins/abort unreachable @@ -4322,7 +4281,7 @@ if i32.const 0 i32.const 496 - i32.const 776 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable @@ -4334,7 +4293,7 @@ if i32.const 0 i32.const 496 - i32.const 855 + i32.const 814 i32.const 1 call $~lib/builtins/abort unreachable @@ -4346,7 +4305,7 @@ if i32.const 0 i32.const 496 - i32.const 932 + i32.const 889 i32.const 1 call $~lib/builtins/abort unreachable @@ -4358,7 +4317,7 @@ if i32.const 0 i32.const 496 - i32.const 990 + i32.const 944 i32.const 1 call $~lib/builtins/abort unreachable @@ -4370,7 +4329,7 @@ if i32.const 0 i32.const 496 - i32.const 1005 + i32.const 959 i32.const 1 call $~lib/builtins/abort unreachable @@ -5679,7 +5638,7 @@ if i32.const 0 i32.const 496 - i32.const 117 + i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable @@ -5705,7 +5664,7 @@ if i32.const 0 i32.const 496 - i32.const 119 + i32.const 113 i32.const 3 call $~lib/builtins/abort unreachable @@ -5728,7 +5687,7 @@ if i32.const 0 i32.const 496 - i32.const 120 + i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable @@ -5754,7 +5713,7 @@ if i32.const 0 i32.const 496 - i32.const 122 + i32.const 116 i32.const 3 call $~lib/builtins/abort unreachable @@ -5777,7 +5736,7 @@ if i32.const 0 i32.const 496 - i32.const 123 + i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable @@ -5800,7 +5759,7 @@ if i32.const 0 i32.const 496 - i32.const 124 + i32.const 118 i32.const 3 call $~lib/builtins/abort unreachable @@ -5839,7 +5798,7 @@ if i32.const 0 i32.const 496 - i32.const 127 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable @@ -6411,7 +6370,7 @@ if i32.const 0 i32.const 496 - i32.const 230 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable @@ -6447,7 +6406,7 @@ if i32.const 0 i32.const 496 - i32.const 233 + i32.const 222 i32.const 3 call $~lib/builtins/abort unreachable @@ -6873,7 +6832,7 @@ if i32.const 0 i32.const 496 - i32.const 292 + i32.const 277 i32.const 3 call $~lib/builtins/abort unreachable @@ -6901,7 +6860,7 @@ if i32.const 0 i32.const 496 - i32.const 293 + i32.const 278 i32.const 3 call $~lib/builtins/abort unreachable @@ -7759,7 +7718,7 @@ if i32.const 0 i32.const 496 - i32.const 352 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable @@ -7777,7 +7736,7 @@ if i32.const 0 i32.const 496 - i32.const 353 + i32.const 337 i32.const 3 call $~lib/builtins/abort unreachable @@ -7795,7 +7754,7 @@ if i32.const 0 i32.const 496 - i32.const 354 + i32.const 338 i32.const 3 call $~lib/builtins/abort unreachable @@ -7813,7 +7772,7 @@ if i32.const 0 i32.const 496 - i32.const 355 + i32.const 339 i32.const 3 call $~lib/builtins/abort unreachable @@ -7831,7 +7790,7 @@ if i32.const 0 i32.const 496 - i32.const 356 + i32.const 340 i32.const 3 call $~lib/builtins/abort unreachable @@ -7849,7 +7808,7 @@ if i32.const 0 i32.const 496 - i32.const 357 + i32.const 341 i32.const 3 call $~lib/builtins/abort unreachable @@ -8390,7 +8349,7 @@ if i32.const 0 i32.const 496 - i32.const 419 + i32.const 399 i32.const 3 call $~lib/builtins/abort unreachable @@ -8790,7 +8749,7 @@ if i32.const 0 i32.const 496 - i32.const 488 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable @@ -8815,7 +8774,7 @@ if i32.const 0 i32.const 496 - i32.const 490 + i32.const 465 i32.const 3 call $~lib/builtins/abort unreachable @@ -8838,7 +8797,7 @@ if i32.const 0 i32.const 496 - i32.const 491 + i32.const 466 i32.const 3 call $~lib/builtins/abort unreachable @@ -8863,7 +8822,7 @@ if i32.const 0 i32.const 496 - i32.const 493 + i32.const 468 i32.const 3 call $~lib/builtins/abort unreachable @@ -8888,7 +8847,7 @@ if i32.const 0 i32.const 496 - i32.const 495 + i32.const 470 i32.const 3 call $~lib/builtins/abort unreachable @@ -8911,7 +8870,7 @@ if i32.const 0 i32.const 496 - i32.const 496 + i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable @@ -8936,7 +8895,7 @@ if i32.const 0 i32.const 496 - i32.const 498 + i32.const 473 i32.const 3 call $~lib/builtins/abort unreachable @@ -8959,7 +8918,7 @@ if i32.const 0 i32.const 496 - i32.const 499 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable @@ -8984,7 +8943,7 @@ if i32.const 0 i32.const 496 - i32.const 501 + i32.const 476 i32.const 3 call $~lib/builtins/abort unreachable @@ -9007,7 +8966,7 @@ if i32.const 0 i32.const 496 - i32.const 502 + i32.const 477 i32.const 3 call $~lib/builtins/abort unreachable @@ -9032,7 +8991,7 @@ if i32.const 0 i32.const 496 - i32.const 504 + i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable @@ -9067,7 +9026,7 @@ if i32.const 0 i32.const 496 - i32.const 507 + i32.const 482 i32.const 3 call $~lib/builtins/abort unreachable @@ -9913,7 +9872,7 @@ if i32.const 0 i32.const 496 - i32.const 586 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -9931,7 +9890,7 @@ if i32.const 0 i32.const 496 - i32.const 587 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -9949,7 +9908,7 @@ if i32.const 0 i32.const 496 - i32.const 588 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -10948,7 +10907,7 @@ if i32.const 0 i32.const 496 - i32.const 749 + i32.const 711 i32.const 3 call $~lib/builtins/abort unreachable @@ -10974,7 +10933,7 @@ if i32.const 0 i32.const 496 - i32.const 753 + i32.const 715 i32.const 3 call $~lib/builtins/abort unreachable @@ -10994,7 +10953,7 @@ if i32.const 0 i32.const 496 - i32.const 754 + i32.const 716 i32.const 3 call $~lib/builtins/abort unreachable @@ -11447,7 +11406,7 @@ if i32.const 0 i32.const 496 - i32.const 833 + i32.const 792 i32.const 3 call $~lib/builtins/abort unreachable @@ -11472,7 +11431,7 @@ if i32.const 0 i32.const 496 - i32.const 836 + i32.const 795 i32.const 3 call $~lib/builtins/abort unreachable @@ -11497,7 +11456,7 @@ if i32.const 0 i32.const 496 - i32.const 837 + i32.const 796 i32.const 3 call $~lib/builtins/abort unreachable @@ -11526,7 +11485,7 @@ if i32.const 0 i32.const 496 - i32.const 840 + i32.const 799 i32.const 3 call $~lib/builtins/abort unreachable @@ -11555,7 +11514,7 @@ if i32.const 0 i32.const 496 - i32.const 841 + i32.const 800 i32.const 3 call $~lib/builtins/abort unreachable @@ -11584,7 +11543,7 @@ if i32.const 0 i32.const 496 - i32.const 842 + i32.const 801 i32.const 3 call $~lib/builtins/abort unreachable @@ -11602,7 +11561,7 @@ if i32.const 0 i32.const 496 - i32.const 844 + i32.const 803 i32.const 3 call $~lib/builtins/abort unreachable @@ -11627,7 +11586,7 @@ if i32.const 0 i32.const 496 - i32.const 847 + i32.const 806 i32.const 3 call $~lib/builtins/abort unreachable @@ -11652,7 +11611,7 @@ if i32.const 0 i32.const 496 - i32.const 848 + i32.const 807 i32.const 3 call $~lib/builtins/abort unreachable @@ -11681,7 +11640,7 @@ if i32.const 0 i32.const 496 - i32.const 851 + i32.const 810 i32.const 3 call $~lib/builtins/abort unreachable @@ -12489,7 +12448,7 @@ if i32.const 0 i32.const 496 - i32.const 927 + i32.const 884 i32.const 3 call $~lib/builtins/abort unreachable @@ -12512,7 +12471,7 @@ if i32.const 0 i32.const 496 - i32.const 928 + i32.const 885 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/closure-class.release.wat b/tests/compiler/closure-class.release.wat index 7145cd57a2..56343cde8f 100644 --- a/tests/compiler/closure-class.release.wat +++ b/tests/compiler/closure-class.release.wat @@ -2250,7 +2250,7 @@ if i32.const 0 i32.const 1520 - i32.const 45 + i32.const 43 i32.const 1 call $~lib/builtins/abort unreachable @@ -2384,7 +2384,7 @@ if i32.const 0 i32.const 1520 - i32.const 62 + i32.const 60 i32.const 1 call $~lib/builtins/abort unreachable @@ -2395,7 +2395,7 @@ if i32.const 0 i32.const 1520 - i32.const 131 + i32.const 125 i32.const 1 call $~lib/builtins/abort unreachable @@ -2534,7 +2534,7 @@ if i32.const 0 i32.const 1520 - i32.const 175 + i32.const 168 i32.const 1 call $~lib/builtins/abort unreachable @@ -2722,7 +2722,7 @@ if i32.const 0 i32.const 1520 - i32.const 230 + i32.const 219 i32.const 3 call $~lib/builtins/abort unreachable @@ -2751,7 +2751,7 @@ if i32.const 0 i32.const 1520 - i32.const 233 + i32.const 222 i32.const 3 call $~lib/builtins/abort unreachable @@ -2774,7 +2774,7 @@ if i32.const 0 i32.const 1520 - i32.const 237 + i32.const 226 i32.const 1 call $~lib/builtins/abort unreachable @@ -3020,7 +3020,7 @@ if i32.const 0 i32.const 1520 - i32.const 292 + i32.const 277 i32.const 3 call $~lib/builtins/abort unreachable @@ -3045,7 +3045,7 @@ if i32.const 0 i32.const 1520 - i32.const 293 + i32.const 278 i32.const 3 call $~lib/builtins/abort unreachable @@ -3086,7 +3086,7 @@ if i32.const 0 i32.const 1520 - i32.const 300 + i32.const 285 i32.const 1 call $~lib/builtins/abort unreachable @@ -3097,7 +3097,7 @@ if i32.const 0 i32.const 1520 - i32.const 361 + i32.const 345 i32.const 1 call $~lib/builtins/abort unreachable @@ -3352,7 +3352,7 @@ if i32.const 0 i32.const 1520 - i32.const 419 + i32.const 399 i32.const 3 call $~lib/builtins/abort unreachable @@ -3365,7 +3365,7 @@ if i32.const 0 i32.const 1520 - i32.const 511 + i32.const 486 i32.const 1 call $~lib/builtins/abort unreachable @@ -3376,7 +3376,7 @@ if i32.const 0 i32.const 1520 - i32.const 592 + i32.const 562 i32.const 1 call $~lib/builtins/abort unreachable @@ -3517,7 +3517,7 @@ if i32.const 0 i32.const 1520 - i32.const 637 + i32.const 604 i32.const 1 call $~lib/builtins/abort unreachable @@ -3600,7 +3600,7 @@ if i32.const 0 i32.const 1520 - i32.const 648 + i32.const 615 i32.const 1 call $~lib/builtins/abort unreachable @@ -3761,7 +3761,7 @@ if i32.const 0 i32.const 1520 - i32.const 698 + i32.const 662 i32.const 1 call $~lib/builtins/abort unreachable @@ -3841,7 +3841,7 @@ if i32.const 0 i32.const 1520 - i32.const 749 + i32.const 711 i32.const 3 call $~lib/builtins/abort unreachable @@ -3863,7 +3863,7 @@ if i32.const 0 i32.const 1520 - i32.const 753 + i32.const 715 i32.const 3 call $~lib/builtins/abort unreachable @@ -3895,7 +3895,7 @@ if i32.const 0 i32.const 1520 - i32.const 754 + i32.const 716 i32.const 3 call $~lib/builtins/abort unreachable @@ -3911,7 +3911,7 @@ if i32.const 0 i32.const 1520 - i32.const 758 + i32.const 720 i32.const 1 call $~lib/builtins/abort unreachable @@ -4007,7 +4007,7 @@ if i32.const 0 i32.const 1520 - i32.const 776 + i32.const 738 i32.const 1 call $~lib/builtins/abort unreachable @@ -4018,7 +4018,7 @@ if i32.const 0 i32.const 1520 - i32.const 855 + i32.const 814 i32.const 1 call $~lib/builtins/abort unreachable @@ -4140,7 +4140,7 @@ if i32.const 0 i32.const 1520 - i32.const 927 + i32.const 884 i32.const 3 call $~lib/builtins/abort unreachable @@ -4159,7 +4159,7 @@ if i32.const 0 i32.const 1520 - i32.const 928 + i32.const 885 i32.const 3 call $~lib/builtins/abort unreachable @@ -4196,7 +4196,7 @@ if i32.const 0 i32.const 1520 - i32.const 932 + i32.const 889 i32.const 1 call $~lib/builtins/abort unreachable @@ -4274,7 +4274,7 @@ if i32.const 0 i32.const 1520 - i32.const 990 + i32.const 944 i32.const 1 call $~lib/builtins/abort unreachable @@ -4352,7 +4352,7 @@ if i32.const 0 i32.const 1520 - i32.const 1005 + i32.const 959 i32.const 1 call $~lib/builtins/abort unreachable @@ -5060,7 +5060,7 @@ if i32.const 0 i32.const 1520 - i32.const 117 + i32.const 111 i32.const 3 call $~lib/builtins/abort unreachable @@ -5079,7 +5079,7 @@ if i32.const 0 i32.const 1520 - i32.const 119 + i32.const 113 i32.const 3 call $~lib/builtins/abort unreachable @@ -5098,7 +5098,7 @@ if i32.const 0 i32.const 1520 - i32.const 120 + i32.const 114 i32.const 3 call $~lib/builtins/abort unreachable @@ -5116,7 +5116,7 @@ if i32.const 0 i32.const 1520 - i32.const 122 + i32.const 116 i32.const 3 call $~lib/builtins/abort unreachable @@ -5135,7 +5135,7 @@ if i32.const 0 i32.const 1520 - i32.const 123 + i32.const 117 i32.const 3 call $~lib/builtins/abort unreachable @@ -5154,7 +5154,7 @@ if i32.const 0 i32.const 1520 - i32.const 124 + i32.const 118 i32.const 3 call $~lib/builtins/abort unreachable @@ -5183,7 +5183,7 @@ if i32.const 0 i32.const 1520 - i32.const 127 + i32.const 121 i32.const 3 call $~lib/builtins/abort unreachable @@ -6398,7 +6398,7 @@ if i32.const 0 i32.const 1520 - i32.const 352 + i32.const 336 i32.const 3 call $~lib/builtins/abort unreachable @@ -6413,7 +6413,7 @@ if i32.const 0 i32.const 1520 - i32.const 353 + i32.const 337 i32.const 3 call $~lib/builtins/abort unreachable @@ -6428,7 +6428,7 @@ if i32.const 0 i32.const 1520 - i32.const 354 + i32.const 338 i32.const 3 call $~lib/builtins/abort unreachable @@ -6443,7 +6443,7 @@ if i32.const 0 i32.const 1520 - i32.const 355 + i32.const 339 i32.const 3 call $~lib/builtins/abort unreachable @@ -6458,7 +6458,7 @@ if i32.const 0 i32.const 1520 - i32.const 356 + i32.const 340 i32.const 3 call $~lib/builtins/abort unreachable @@ -6473,7 +6473,7 @@ if i32.const 0 i32.const 1520 - i32.const 357 + i32.const 341 i32.const 3 call $~lib/builtins/abort unreachable @@ -7288,7 +7288,7 @@ if i32.const 0 i32.const 1520 - i32.const 488 + i32.const 463 i32.const 3 call $~lib/builtins/abort unreachable @@ -7306,7 +7306,7 @@ if i32.const 0 i32.const 1520 - i32.const 490 + i32.const 465 i32.const 3 call $~lib/builtins/abort unreachable @@ -7325,7 +7325,7 @@ if i32.const 0 i32.const 1520 - i32.const 491 + i32.const 466 i32.const 3 call $~lib/builtins/abort unreachable @@ -7342,7 +7342,7 @@ if i32.const 0 i32.const 1520 - i32.const 493 + i32.const 468 i32.const 3 call $~lib/builtins/abort unreachable @@ -7360,7 +7360,7 @@ if i32.const 0 i32.const 1520 - i32.const 495 + i32.const 470 i32.const 3 call $~lib/builtins/abort unreachable @@ -7379,7 +7379,7 @@ if i32.const 0 i32.const 1520 - i32.const 496 + i32.const 471 i32.const 3 call $~lib/builtins/abort unreachable @@ -7397,7 +7397,7 @@ if i32.const 0 i32.const 1520 - i32.const 498 + i32.const 473 i32.const 3 call $~lib/builtins/abort unreachable @@ -7416,7 +7416,7 @@ if i32.const 0 i32.const 1520 - i32.const 499 + i32.const 474 i32.const 3 call $~lib/builtins/abort unreachable @@ -7434,7 +7434,7 @@ if i32.const 0 i32.const 1520 - i32.const 501 + i32.const 476 i32.const 3 call $~lib/builtins/abort unreachable @@ -7453,7 +7453,7 @@ if i32.const 0 i32.const 1520 - i32.const 502 + i32.const 477 i32.const 3 call $~lib/builtins/abort unreachable @@ -7470,7 +7470,7 @@ if i32.const 0 i32.const 1520 - i32.const 504 + i32.const 479 i32.const 3 call $~lib/builtins/abort unreachable @@ -7496,7 +7496,7 @@ if i32.const 0 i32.const 1520 - i32.const 507 + i32.const 482 i32.const 3 call $~lib/builtins/abort unreachable @@ -8177,7 +8177,7 @@ if i32.const 0 i32.const 1520 - i32.const 586 + i32.const 556 i32.const 3 call $~lib/builtins/abort unreachable @@ -8192,7 +8192,7 @@ if i32.const 0 i32.const 1520 - i32.const 587 + i32.const 557 i32.const 3 call $~lib/builtins/abort unreachable @@ -8207,7 +8207,7 @@ if i32.const 0 i32.const 1520 - i32.const 588 + i32.const 558 i32.const 3 call $~lib/builtins/abort unreachable @@ -9096,7 +9096,7 @@ if i32.const 0 i32.const 1520 - i32.const 833 + i32.const 792 i32.const 3 call $~lib/builtins/abort unreachable @@ -9114,7 +9114,7 @@ if i32.const 0 i32.const 1520 - i32.const 836 + i32.const 795 i32.const 3 call $~lib/builtins/abort unreachable @@ -9131,7 +9131,7 @@ if i32.const 0 i32.const 1520 - i32.const 837 + i32.const 796 i32.const 3 call $~lib/builtins/abort unreachable @@ -9154,7 +9154,7 @@ if i32.const 0 i32.const 1520 - i32.const 840 + i32.const 799 i32.const 3 call $~lib/builtins/abort unreachable @@ -9177,7 +9177,7 @@ if i32.const 0 i32.const 1520 - i32.const 841 + i32.const 800 i32.const 3 call $~lib/builtins/abort unreachable @@ -9200,7 +9200,7 @@ if i32.const 0 i32.const 1520 - i32.const 842 + i32.const 801 i32.const 3 call $~lib/builtins/abort unreachable @@ -9215,7 +9215,7 @@ if i32.const 0 i32.const 1520 - i32.const 844 + i32.const 803 i32.const 3 call $~lib/builtins/abort unreachable @@ -9233,7 +9233,7 @@ if i32.const 0 i32.const 1520 - i32.const 847 + i32.const 806 i32.const 3 call $~lib/builtins/abort unreachable @@ -9250,7 +9250,7 @@ if i32.const 0 i32.const 1520 - i32.const 848 + i32.const 807 i32.const 3 call $~lib/builtins/abort unreachable @@ -9273,7 +9273,7 @@ if i32.const 0 i32.const 1520 - i32.const 851 + i32.const 810 i32.const 3 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/closure-class.ts b/tests/compiler/closure-class.ts index 0aaeff5fca..988238bcef 100644 --- a/tests/compiler/closure-class.ts +++ b/tests/compiler/closure-class.ts @@ -1,5 +1,5 @@ // ============================================================================= -// CLOSURE CLASS TEST - Complex class and "this" closure testing for AssemblyScript +// CLOSURE CLASS TEST // ============================================================================= // ============================================================================= diff --git a/tests/compiler/closure-stress.ts b/tests/compiler/closure-stress.ts index bc6abf9dfc..cb95fadda1 100644 --- a/tests/compiler/closure-stress.ts +++ b/tests/compiler/closure-stress.ts @@ -1,5 +1,5 @@ // ============================================================================= -// CLOSURE STRESS TEST - Comprehensive closure testing for AssemblyScript +// CLOSURE STRESS TEST // ============================================================================= // =============================================================================