From bad90fbdc5bc8283cf466dfe922cd1e2a34cefb4 Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 4 Jan 2020 06:24:33 +0100 Subject: [PATCH 01/19] Rework for statement compilation --- src/compiler.ts | 253 +- tests/compiler/comma.optimized.wat | 4 +- tests/compiler/comma.untouched.wat | 19 +- tests/compiler/continue.optimized.wat | 17 +- tests/compiler/continue.untouched.wat | 23 +- .../extends-baseaggregate.optimized.wat | 20 +- .../extends-baseaggregate.untouched.wat | 99 +- tests/compiler/for.optimized.wat | 36 +- tests/compiler/for.untouched.wat | 167 +- tests/compiler/infer-generic.optimized.wat | 4 +- tests/compiler/infer-generic.untouched.wat | 37 +- tests/compiler/infer-type.optimized.wat | 4 +- tests/compiler/infer-type.untouched.wat | 23 +- tests/compiler/loop-flow.optimized.wat | 4 +- tests/compiler/loop-flow.untouched.wat | 77 +- tests/compiler/mandelbrot.optimized.wat | 4 +- tests/compiler/mandelbrot.untouched.wat | 19 +- tests/compiler/number.optimized.wat | 8 +- tests/compiler/number.untouched.wat | 38 +- tests/compiler/rc/global-init.optimized.wat | 20 +- tests/compiler/rc/global-init.untouched.wat | 99 +- tests/compiler/rc/local-init.optimized.wat | 20 +- tests/compiler/rc/local-init.untouched.wat | 99 +- .../rc/logical-and-mismatch.optimized.wat | 20 +- .../rc/logical-and-mismatch.untouched.wat | 99 +- .../rc/logical-or-mismatch.optimized.wat | 20 +- .../rc/logical-or-mismatch.untouched.wat | 99 +- tests/compiler/rc/optimize.optimized.wat | 20 +- tests/compiler/rc/optimize.untouched.wat | 99 +- tests/compiler/rc/rereturn.optimized.wat | 20 +- tests/compiler/rc/rereturn.untouched.wat | 99 +- .../rc/ternary-mismatch.optimized.wat | 20 +- .../rc/ternary-mismatch.untouched.wat | 99 +- tests/compiler/resolve-binary.optimized.wat | 8 +- tests/compiler/resolve-binary.untouched.wat | 38 +- .../resolve-elementaccess.optimized.wat | 8 +- .../resolve-elementaccess.untouched.wat | 38 +- tests/compiler/resolve-ternary.optimized.wat | 28 +- tests/compiler/resolve-ternary.untouched.wat | 137 +- tests/compiler/retain-i32.optimized.wat | 4 +- tests/compiler/retain-i32.untouched.wat | 19 +- .../retain-release-sanity.optimized.wat | 28 +- .../retain-release-sanity.untouched.wat | 137 +- tests/compiler/retain-release.optimized.wat | 8 +- tests/compiler/retain-release.untouched.wat | 45 +- tests/compiler/retain-return.optimized.wat | 20 +- tests/compiler/retain-return.untouched.wat | 99 +- tests/compiler/rt/flags.optimized.wat | 236 +- tests/compiler/runtime-full.optimized.wat | 20 +- tests/compiler/runtime-full.untouched.wat | 99 +- tests/compiler/scoped.optimized.wat | 8 +- tests/compiler/scoped.untouched.wat | 38 +- .../compiler/std/array-literal.optimized.wat | 20 +- .../compiler/std/array-literal.untouched.wat | 99 +- tests/compiler/std/array.optimized.wat | 391 +- tests/compiler/std/array.untouched.wat | 1654 +++-- tests/compiler/std/arraybuffer.optimized.wat | 20 +- tests/compiler/std/arraybuffer.untouched.wat | 99 +- tests/compiler/std/dataview.optimized.wat | 20 +- tests/compiler/std/dataview.untouched.wat | 99 +- tests/compiler/std/hash.optimized.wat | 36 +- tests/compiler/std/hash.untouched.wat | 29 +- tests/compiler/std/map.optimized.wat | 998 ++- tests/compiler/std/map.untouched.wat | 1451 ++--- tests/compiler/std/math.optimized.wat | 30 +- tests/compiler/std/math.untouched.wat | 42 +- tests/compiler/std/set.optimized.wat | 890 ++- tests/compiler/std/set.untouched.wat | 1261 ++-- .../std/string-encoding.optimized.wat | 20 +- .../std/string-encoding.untouched.wat | 99 +- tests/compiler/std/string.optimized.wat | 242 +- tests/compiler/std/string.untouched.wat | 471 +- tests/compiler/std/symbol.optimized.wat | 28 +- tests/compiler/std/symbol.untouched.wat | 29 +- tests/compiler/std/typedarray.optimized.wat | 1222 ++-- tests/compiler/std/typedarray.untouched.wat | 5396 +++++++---------- 76 files changed, 7607 insertions(+), 9746 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index ee9be37002..893b697eb2 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3,7 +3,7 @@ * @module compiler *//***/ -import { + import { BuiltinSymbols, compileCall as compileBuiltinCall, compileAbort, @@ -2001,145 +2001,148 @@ export class Compiler extends DiagnosticEmitter { statement: ForStatement ): ExpressionRef { var module = this.module; - - // Set up and use the inner flow var outerFlow = this.currentFlow; - var label = outerFlow.pushBreakLabel(); - var innerFlow = outerFlow.fork(); - this.currentFlow = innerFlow; - - // Compile the initializer - var initializer = statement.initializer; - var initExpr: ExpressionRef = 0; - if (initializer) initExpr = this.compileStatement(initializer); - - // Compile the condition - var condExpr: ExpressionRef = 0; - var alwaysTrue = false; - if (statement.condition) { - condExpr = module.precomputeExpression( - this.makeIsTrueish( - this.compileExpression(statement.condition, Type.bool), - this.currentType - ) - ); - // Simplify if the condition is constant - if (getExpressionId(condExpr) == ExpressionId.Const) { - assert(getExpressionType(condExpr) == NativeType.I32); - if (getConstValueI32(condExpr) == /* false */ 0) { - let stmts = new Array(); - if (initExpr) stmts.push(initExpr); - this.performAutoreleases(innerFlow, stmts); - innerFlow.freeScopedLocals(); - outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; - return flatten(module, stmts, NativeType.None); - } - alwaysTrue = true; - } - } else { // Omitted condition is always true - condExpr = module.i32(1); - alwaysTrue = true; - } - innerFlow.inheritNonnullIfTrue(condExpr); - // Compile the incrementor before the body in order to... - var incrementor = statement.incrementor; - var incrExpr: ExpressionRef = 0; - if (incrementor) { - let incrFlow = innerFlow.fork(); - this.currentFlow = incrFlow; - incrExpr = this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP); - assert(!incrFlow.hasScopedLocals); - this.currentFlow = innerFlow; - // ...unify local states before and after the incrementor has been executed the first time - innerFlow.unifyLocalFlags(incrFlow); - } + // (initializer) ┐ flow + // (block $break │ + // (loop $loop │ ┐ loopFlow + // (if (condition) │ │ + // (block $continue │ │ ┐ contFlow + // (body) │ │ ┘ + // ) │ │ + // (incrementor) │ │ ┐ incrFlow + // │ │ ┘ + // (br $loop) │ │ + // ) │ ┘ + // ) │ + // ) ┘ - // Compile body (break: drop out, continue: fall through to incrementor, + loop) - var bodyFlow = innerFlow.fork(); - this.currentFlow = bodyFlow; - var breakLabel = innerFlow.breakLabel = "break|" + label; bodyFlow.breakLabel = breakLabel; - bodyFlow.breakLabel = breakLabel; - var continueLabel = "continue|" + label; - bodyFlow.continueLabel = continueLabel; - var loopLabel = "loop|" + label; - var bodyStatement = statement.statement; + var label = outerFlow.pushBreakLabel(); var stmts = new Array(); - if (bodyStatement.kind == NodeKind.BLOCK) { - this.compileStatements((bodyStatement).statements, false, stmts); - } else { - stmts.push(this.compileStatement(bodyStatement)); - } - var terminates = bodyFlow.is(FlowFlags.TERMINATES); - var continues = bodyFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); - var breaks = bodyFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS); - var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); - - // Finalize body flow - if (fallsThrough) this.performAutoreleases(bodyFlow, stmts); - bodyFlow.freeScopedLocals(); - innerFlow.inherit(bodyFlow); - this.currentFlow = innerFlow; - - // (block $break ;; (1) skip label (needed anyway) if skipping (4) + no breaks - // (initializer) ;; (2) [may be empty] - // (loop $loop ;; (3) skip if (6) does not fall through + no continues - // (br_if !cond $break) ;; (4) skip if always true - // (block $continue ;; (5) skip if no continues or nothing else than continue - // (...) ;; (6) - // ) - // (incrementor) ;; (7) skip if skipping (3) [may be empty] - // (br $loop) ;; (8) skip if skipping (3) - // ) - // ) - var needsLabel = !alwaysTrue || breaks; + var flow = outerFlow.fork(); + this.currentFlow = flow; - var loop = new Array(); - if (!alwaysTrue) { // (4) - loop.push(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr))); - } - if (continues) { // (5) - if (stmts.length > 1 || getExpressionId(stmts[0]) != ExpressionId.Break) { // otherwise lonely continue - loop.push(module.block(continueLabel, stmts)); - } - } else { - for (let i = 0, k = stmts.length; i < k; ++i) loop.push(stmts[i]); - } - var expr: ExpressionRef; - if (fallsThrough || continues) { // (3) - if (incrExpr) loop.push(incrExpr); // (7) - this.performAutoreleases(innerFlow, loop); - loop.push(module.br(loopLabel)); // (8) - if (initExpr) { // (2) - expr = module.block(needsLabel ? breakLabel : null, [ - initExpr, - module.loop(loopLabel, module.block(null, loop)) - ]); + { + let initializer = statement.initializer; + if (initializer) stmts.push(this.compileStatement(initializer)); + } + + var loopFlow = flow.fork(); + var condExpr: ExpressionRef; + var condTrue = false; + { + let condition = statement.condition; + if (condition) { + condExpr = module.precomputeExpression( + this.makeIsTrueish( + this.compileExpression(condition, Type.bool), + this.currentType + ) + ); + if (getExpressionId(condExpr) == ExpressionId.Const) { + if (!getConstValueI32(condExpr)) { // condition is always false + // only initializer will run -> simplify + this.performAutoreleases(loopFlow, stmts); + loopFlow.freeScopedLocals(); + flow.inherit(loopFlow); + this.performAutoreleases(flow, stmts); + flow.freeScopedLocals(); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return flatten(module, stmts, NativeType.None); + } + condTrue = true; // condition is always true + } + } else { // omitted condition is always true + condExpr = module.i32(1); + condTrue = true; + } + } + + var incrStmts = new Array(); + { + let incrementor = statement.incrementor; + if (incrementor) { + let incrFlow = loopFlow.fork(); + this.currentFlow = incrFlow; + incrStmts.push( + this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP) + ); + this.performAutoreleases(incrFlow, incrStmts); + incrFlow.freeScopedLocals(); + // The incrementor has no CFG side-effects, but can modify local state. + // Hence: unify flags before and after the incrementor runs + // TODO: Can also throw, but that's not implemented yet. + loopFlow.unifyLocalFlags(incrFlow); + this.currentFlow = loopFlow; + } + } + + var contFlow = loopFlow.fork(); + this.currentFlow = contFlow; + var breakLabel = "for-break" + label; + contFlow.breakLabel = breakLabel; + var continueLabel = "for-continue|" + label; + contFlow.continueLabel = continueLabel; + var loopLabel = "for-loop|" + label; + + var contStmts = new Array(); + { + let body = statement.statement; + if (body.kind == NodeKind.BLOCK) { + this.compileStatements((body).statements, false, contStmts); } else { - expr = module.block(needsLabel ? breakLabel : null, [ - module.loop(loopLabel, flatten(module, loop, NativeType.None)) - ]); + contStmts.push(this.compileStatement(body)); } + if (contFlow.is(FlowFlags.TERMINATES) || flow.is(FlowFlags.BREAKS)) { + // contStmts.push(module.unreachable()); + } else { + this.performAutoreleases(contFlow, contStmts); + } + // TODO: For a proper CFG we'd have to take into account that the loop + // body affects itself when executing at least twice. One way to do this + // would be to unroll the first iteration if we detect that local states + // differ before and after the loop executed for the first time, or we + // can move this logic to a checker. The latter is preferrable because + // since it can determine such a condition prior we can compile once with + // the least common denominator of flags (i.e. null and wrap states). + } + contFlow.freeScopedLocals(); + if (condTrue) loopFlow.inherit(contFlow); + else loopFlow.inheritConditional(contFlow); + flow.inherit(loopFlow); + this.currentFlow = flow; + + stmts.push( + module.block(breakLabel, [ + module.loop(loopLabel, + module.if(condExpr, + module.block(null, [ + module.block(continueLabel, contStmts), + module.block(null, incrStmts), + module.br(loopLabel) + ]) + ) + ) + ]) + ); + if (!flow.is(FlowFlags.TERMINATES)) { + this.performAutoreleases(flow, stmts); } else { - if (initExpr) loop.unshift(initExpr); // (2) - this.performAutoreleases(innerFlow, loop); - expr = module.block(needsLabel ? breakLabel : null, loop); + stmts.push(module.unreachable()); } - - // Switch back to the parent flow - innerFlow.freeScopedLocals(); - outerFlow.popBreakLabel(); - innerFlow.unset( + flow.freeScopedLocals(); + flow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES ); - if (alwaysTrue) outerFlow.inherit(innerFlow); - else outerFlow.inheritConditional(innerFlow); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); this.currentFlow = outerFlow; - return expr; + return flatten(module, stmts, NativeType.None); } compileIfStatement( diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index 37fed9aacb..c0cbdeea75 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -116,7 +116,7 @@ end i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 global.get $comma/a i32.lt_s @@ -129,7 +129,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $0 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index a1e6ae76a9..01b72b38a6 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -141,15 +141,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - global.get $comma/a - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + global.get $comma/a + i32.lt_s + if nop global.get $comma/a i32.const 1 @@ -159,9 +157,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 i32.const 1 diff --git a/tests/compiler/continue.optimized.wat b/tests/compiler/continue.optimized.wat index 19e0c4aa8f..898ac25611 100644 --- a/tests/compiler/continue.optimized.wat +++ b/tests/compiler/continue.optimized.wat @@ -5,26 +5,25 @@ (export "testInherit" (func $continue/testInherit)) (func $continue/testInherit (; 0 ;) (param $0 i32) (local $1 i32) - loop $loop|0 - block $break|0 - local.get $1 - i32.const 10 - i32.ge_s - br_if $break|0 - block $continue|0 + loop $for-loop|0 + local.get $1 + i32.const 10 + i32.lt_s + if + block $for-continue|0 local.get $0 i32.const 0 local.get $1 i32.const 5 i32.eq select - br_if $continue|0 + br_if $for-continue|0 end local.get $1 i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.untouched.wat index 7f31f8d763..35454b30e3 100644 --- a/tests/compiler/continue.untouched.wat +++ b/tests/compiler/continue.untouched.wat @@ -6,23 +6,21 @@ (export "testInherit" (func $continue/testInherit)) (func $continue/testInherit (; 0 ;) (param $0 i32) (local $1 i32) - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 10 + i32.lt_s + if + block $for-continue|0 local.get $0 if local.get $1 i32.const 5 i32.eq if - br $continue|0 + br $for-continue|0 end end end @@ -30,9 +28,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end ) ) diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 5083ef8882..79f23fe6a8 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -628,7 +628,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -642,7 +642,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -662,14 +662,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 560 @@ -979,7 +979,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1038,14 +1038,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1057,12 +1057,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1081,7 +1081,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 561b2c83a2..5c0a360a9d 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -808,15 +808,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -830,15 +828,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -862,17 +858,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1263,17 +1257,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1336,21 +1328,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1358,19 +1347,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1388,9 +1374,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index b838b32f83..bc382a57c3 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -12,7 +12,7 @@ (local $1 i32) i32.const 0 global.set $for/i - loop $loop|0 + loop $for-loop|0 global.get $for/i i32.const 10 i32.lt_s @@ -21,7 +21,7 @@ i32.const 1 i32.add global.set $for/i - br $loop|0 + br $for-loop|0 end end global.get $for/i @@ -35,7 +35,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 10 i32.lt_s @@ -44,10 +44,10 @@ i32.const 1 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end - loop $loop|2 + loop $for-loop|2 global.get $for/i i32.const 0 i32.gt_s @@ -56,7 +56,7 @@ i32.const 1 i32.sub global.set $for/i - br $loop|2 + br $for-loop|2 end end global.get $for/i @@ -68,7 +68,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|3 + loop $for-loop|3 global.get $for/i i32.const 10 i32.ne @@ -77,20 +77,20 @@ i32.const 1 i32.add global.set $for/i - br $loop|3 + br $for-loop|3 end end - loop $loop|4 + loop $for-loop|4 global.get $for/i i32.const 1 i32.sub global.set $for/i global.get $for/i - br_if $loop|4 + br_if $for-loop|4 end i32.const 0 local.set $0 - loop $loop|5 + loop $for-loop|5 local.get $0 i32.const 10 i32.lt_s @@ -99,7 +99,7 @@ i32.const 1 i32.add local.set $0 - br $loop|5 + br $for-loop|5 end end local.get $0 @@ -115,36 +115,36 @@ end i32.const 0 local.set $0 - loop $loop|6 + loop $for-loop|6 local.get $0 i32.const 10 i32.lt_s if i32.const 0 local.set $1 - loop $loop|7 + loop $for-loop|7 local.get $1 i32.const 10 i32.lt_s if - block $continue|7 + block $for-continue|7 local.get $0 local.get $1 i32.eq - br_if $continue|7 + br_if $for-continue|7 end local.get $1 i32.const 1 i32.add local.set $1 - br $loop|7 + br $for-loop|7 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|6 + br $for-loop|6 end end ) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index dbcb3925b9..8e5fd15552 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -13,22 +13,19 @@ (local $1 i32) (local $2 i32) (local $3 i32) - block $break|0 - i32.const 0 - global.set $for/i - loop $loop|0 - global.get $for/i - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + global.set $for/i + loop $for-loop|0 + global.get $for/i + i32.const 10 + i32.lt_s + if global.get $for/i i32.const 1 i32.add global.set $for/i - br $loop|0 + br $for-loop|0 end - unreachable end global.get $for/i i32.const 10 @@ -42,38 +39,32 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $0 - loop $loop|1 - local.get $0 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + i32.const 10 + i32.lt_s + if local.get $0 i32.const 1 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - loop $loop|2 - global.get $for/i - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|2 + loop $for-loop|2 + global.get $for/i + i32.const 0 + i32.gt_s + if nop global.get $for/i i32.const 1 i32.sub global.set $for/i - br $loop|2 + br $for-loop|2 end - unreachable end global.get $for/i i32.const 0 @@ -87,54 +78,58 @@ call $~lib/builtins/abort unreachable end - block $break|3 - loop $loop|3 - global.get $for/i - i32.const 10 - i32.eq + block $for-break3 + loop $for-loop|3 + i32.const 1 if - br $break|3 + global.get $for/i + i32.const 10 + i32.eq + if + br $for-break3 + end + global.get $for/i + i32.const 1 + i32.add + global.set $for/i + br $for-loop|3 end - global.get $for/i - i32.const 1 - i32.add - global.set $for/i - br $loop|3 end - unreachable end - block $break|4 - loop $loop|4 - global.get $for/i + block $for-break4 + loop $for-loop|4 i32.const 1 - i32.sub - global.set $for/i - global.get $for/i - i32.const 0 - i32.eq if - br $break|4 + global.get $for/i + i32.const 1 + i32.sub + global.set $for/i + global.get $for/i + i32.const 0 + i32.eq + if + br $for-break4 + end + br $for-loop|4 end - br $loop|4 end - unreachable end - block $break|5 - i32.const 0 - local.set $1 - loop $loop|5 - local.get $1 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|5 + i32.const 0 + local.set $1 + loop $for-loop|5 + local.get $1 + i32.const 10 + i32.lt_s + if + block $for-continue|5 + br $for-continue|5 + end local.get $1 i32.const 1 i32.add local.set $1 - br $loop|5 + br $for-loop|5 end - unreachable end local.get $1 i32.const 10 @@ -148,47 +143,41 @@ call $~lib/builtins/abort unreachable end - block $break|6 - i32.const 0 - local.set $2 - loop $loop|6 - local.get $2 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|6 - block $break|7 - i32.const 0 - local.set $3 - loop $loop|7 - local.get $3 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|7 - block $continue|7 + i32.const 0 + local.set $2 + loop $for-loop|6 + local.get $2 + i32.const 10 + i32.lt_s + if + i32.const 0 + local.set $3 + loop $for-loop|7 + local.get $3 + i32.const 10 + i32.lt_s + if + block $for-continue|7 local.get $2 local.get $3 i32.eq if - br $continue|7 + br $for-continue|7 end end local.get $3 i32.const 1 i32.add local.set $3 - br $loop|7 + br $for-loop|7 end - unreachable end local.get $2 i32.const 1 i32.add local.set $2 - br $loop|6 + br $for-loop|6 end - unreachable end ) (func $start (; 2 ;) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 0dcfc6f211..e06bc706a4 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -30,7 +30,7 @@ i32.const 124 i32.load local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.const 124 @@ -60,7 +60,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 382a3f69b9..37b618c042 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -59,26 +59,24 @@ (local $7 i32) local.get $2 local.set $3 - block $break|0 - i32.const 0 - local.set $4 + i32.const 0 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $5 + local.tee $6 local.get $0 i32.load offset=12 - local.set $5 - loop $loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -98,9 +96,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat index 30971ca988..cd8ce31d1e 100644 --- a/tests/compiler/infer-type.optimized.wat +++ b/tests/compiler/infer-type.optimized.wat @@ -17,7 +17,7 @@ global.set $infer-type/rf f64.const 0 global.set $infer-type/rF - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 10 i32.lt_s @@ -26,7 +26,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index a636b8f7c9..aec2c69f88 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -75,24 +75,21 @@ global.set $infer-type/rF global.get $infer-type/rF drop - block $break|0 - i32.const 0 - local.set $0 - i32.const 10 - local.set $1 - loop $loop|0 - local.get $0 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $0 + i32.const 10 + local.set $1 + loop $for-loop|0 + local.get $0 + local.get $1 + i32.lt_s + if local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $start (; 6 ;) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 36847e855f..0e0412d353 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -45,7 +45,7 @@ end ) (func $loop-flow/forAny (; 3 ;) (param $0 i32) (result i32) - loop $loop|0 (result i32) + loop $for-loop|0 (result i32) local.get $0 i32.const 1 i32.eq @@ -63,7 +63,7 @@ call $~lib/builtins/abort unreachable end - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index d1c0cc5d54..66e79d7082 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -54,37 +54,46 @@ unreachable ) (func $loop-flow/forReturn (; 3 ;) (result i32) - i32.const 1 - return + loop $for-loop|0 + i32.const 1 + if + i32.const 1 + return + end + end + unreachable ) (func $loop-flow/forAny (; 4 ;) (param $0 i32) (result i32) - loop $loop|0 - block $continue|0 - local.get $0 - i32.const 1 - i32.eq - if - i32.const 1 - return - else + loop $for-loop|0 + i32.const 1 + if + block $for-continue|0 local.get $0 - i32.const 2 + i32.const 1 i32.eq if - i32.const 80 - i32.const 32 - i32.const 54 - i32.const 21 - call $~lib/builtins/abort - unreachable + i32.const 1 + return else - br $continue|0 + local.get $0 + i32.const 2 + i32.eq + if + i32.const 80 + i32.const 32 + i32.const 54 + i32.const 21 + call $~lib/builtins/abort + unreachable + else + br $for-continue|0 + end + unreachable end unreachable end - unreachable + br $for-loop|0 end - br $loop|0 end unreachable ) @@ -212,16 +221,28 @@ unreachable ) (func $loop-flow/forThrow (; 10 ;) (result i32) - i32.const 80 - i32.const 32 - i32.const 41 - i32.const 4 - call $~lib/builtins/abort + loop $for-loop|0 + i32.const 1 + if + i32.const 80 + i32.const 32 + i32.const 41 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end unreachable ) (func $loop-flow/forContinue (; 11 ;) (result i32) - loop $loop|0 - br $loop|0 + loop $for-loop|0 + i32.const 1 + if + block $for-continue|0 + br $for-continue|0 + end + br $for-loop|0 + end end unreachable ) diff --git a/tests/compiler/mandelbrot.optimized.wat b/tests/compiler/mandelbrot.optimized.wat index f084a8ebc3..acd891ba71 100644 --- a/tests/compiler/mandelbrot.optimized.wat +++ b/tests/compiler/mandelbrot.optimized.wat @@ -430,7 +430,7 @@ i32.lt_u select local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $8 local.get $1 i32.lt_u @@ -563,7 +563,7 @@ i32.const 1 i32.add local.set $8 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat index 27741c31f4..1653028fd9 100644 --- a/tests/compiler/mandelbrot.untouched.wat +++ b/tests/compiler/mandelbrot.untouched.wat @@ -783,15 +783,13 @@ i32.lt_u select local.set $13 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_u + if local.get $6 f64.convert_i32_u local.get $8 @@ -942,9 +940,8 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index d7249c58bb..45fe1586c3 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -961,7 +961,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -977,7 +977,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -1049,7 +1049,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -1065,7 +1065,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index a694032add..8d49663d55 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -2463,15 +2463,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -2483,9 +2481,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -2574,15 +2571,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -2594,9 +2589,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index d3b2ffaf50..6bd68a70c9 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -672,7 +672,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -686,7 +686,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -706,14 +706,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -999,7 +999,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1058,14 +1058,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1077,12 +1077,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1101,7 +1101,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index b61fa1838a..36627ca029 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -921,15 +921,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -943,15 +941,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -975,17 +971,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1349,17 +1343,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1422,21 +1414,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1444,19 +1433,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1474,9 +1460,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index f62a4e6093..c761769f87 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -671,7 +671,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -685,7 +685,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -705,14 +705,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 352 @@ -998,7 +998,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1057,14 +1057,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1076,12 +1076,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1100,7 +1100,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index a56e08702a..5df94defab 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -859,15 +859,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -881,15 +879,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -913,17 +909,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1287,17 +1281,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1360,21 +1352,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1382,19 +1371,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1412,9 +1398,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index c1a232fb0d..37a31bb55b 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -625,7 +625,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -639,7 +639,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -659,14 +659,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -978,7 +978,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1037,14 +1037,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1056,12 +1056,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1080,7 +1080,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index e60d9514ec..a312f6c0b3 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -805,15 +805,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -827,15 +825,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -859,17 +855,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1262,17 +1256,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1335,21 +1327,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1357,19 +1346,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1387,9 +1373,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index d67d14e134..2d08deecb0 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -625,7 +625,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -639,7 +639,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -659,14 +659,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -978,7 +978,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1037,14 +1037,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1056,12 +1056,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1080,7 +1080,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index b572f07574..5e8813d6c1 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -805,15 +805,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -827,15 +825,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -859,17 +855,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1262,17 +1256,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1335,21 +1327,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1357,19 +1346,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1387,9 +1373,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat index 9903888e48..a88b224b90 100644 --- a/tests/compiler/rc/optimize.optimized.wat +++ b/tests/compiler/rc/optimize.optimized.wat @@ -716,7 +716,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -730,7 +730,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -750,14 +750,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 368 @@ -1069,7 +1069,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1128,14 +1128,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1147,12 +1147,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1171,7 +1171,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat index c95c657467..de761a7443 100644 --- a/tests/compiler/rc/optimize.untouched.wat +++ b/tests/compiler/rc/optimize.untouched.wat @@ -900,15 +900,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -922,15 +920,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -954,17 +950,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1357,17 +1351,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1430,21 +1422,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1452,19 +1441,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1482,9 +1468,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 96d2983d6c..5d4d959214 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -625,7 +625,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -639,7 +639,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -659,14 +659,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -976,7 +976,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1035,14 +1035,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1054,12 +1054,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1078,7 +1078,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 4efa56fae5..87b915e9e9 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -805,15 +805,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -827,15 +825,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -859,17 +855,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1260,17 +1254,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1333,21 +1325,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1355,19 +1344,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1385,9 +1371,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index aab66d1c90..fb53ef547f 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -627,7 +627,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -641,7 +641,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -661,14 +661,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -980,7 +980,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1039,14 +1039,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1058,12 +1058,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1082,7 +1082,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index f879fd6490..929660ec89 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -807,15 +807,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -829,15 +827,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -861,17 +857,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1264,17 +1258,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1337,21 +1329,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1359,19 +1348,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1389,9 +1375,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index 0cbd87900e..a3b73b3b95 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -984,7 +984,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -1000,7 +1000,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -1072,7 +1072,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -1088,7 +1088,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index a5914f8028..d741658b3a 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -3405,15 +3405,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -3425,9 +3423,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -3516,15 +3513,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -3536,9 +3531,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index bc2c5bce8f..4f3e9f8ca0 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -929,7 +929,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -945,7 +945,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -1017,7 +1017,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -1033,7 +1033,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 556cda77cd..8f79692511 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -2589,15 +2589,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -2609,9 +2607,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -2700,15 +2697,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -2720,9 +2715,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 42fea4ff93..27be4f2619 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -650,7 +650,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -664,7 +664,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -684,14 +684,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 1744 @@ -1001,7 +1001,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1060,14 +1060,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1079,12 +1079,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1103,7 +1103,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2380,7 +2380,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -2396,7 +2396,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -2468,7 +2468,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -2484,7 +2484,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index fbc0069290..e84e966b76 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -839,15 +839,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -861,15 +859,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -893,17 +889,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1294,17 +1288,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1367,21 +1359,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1389,19 +1378,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1419,9 +1405,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4303,15 +4288,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -4323,9 +4306,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -4414,15 +4396,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -4434,9 +4414,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index 2911aa407d..fa8b67a366 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -11,7 +11,7 @@ (local $0 i32) i32.const -128 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 255 i32.le_s @@ -20,7 +20,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const -1 diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index c66e51bdbc..a6e0613536 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -407,15 +407,13 @@ global.get $~lib/builtins/u8.MAX_VALUE global.get $~lib/builtins/u8.MAX_VALUE call $retain-i32/test - block $break|0 - global.get $~lib/builtins/i8.MIN_VALUE - local.set $0 - loop $loop|0 - local.get $0 - i32.const 255 - i32.le_s - i32.eqz - br_if $break|0 + global.get $~lib/builtins/i8.MIN_VALUE + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 255 + i32.le_s + if i32.const 0 local.get $0 call $retain-i32/test @@ -456,9 +454,8 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 127 i32.const 127 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index e3e2503578..009252ddfb 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -634,7 +634,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -648,7 +648,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -668,14 +668,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 720 @@ -987,7 +987,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1046,14 +1046,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1065,12 +1065,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1089,7 +1089,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2434,7 +2434,7 @@ local.get $0 i32.const 0 i32.store offset=12 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 10 i32.lt_s @@ -2453,7 +2453,7 @@ i32.store offset=12 i32.const 0 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 i32.const 10 i32.lt_s @@ -2464,7 +2464,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $3 @@ -2473,7 +2473,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 2818b35627..616035213b 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -813,15 +813,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -835,15 +833,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -867,17 +863,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1270,17 +1264,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1343,21 +1335,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1365,19 +1354,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1395,9 +1381,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4155,28 +4140,24 @@ i32.const 0 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 10 + i32.lt_s + if i32.const 0 i32.const 0 call $~lib/array/Array<~lib/string/String>#constructor local.set $2 - block $break|1 - i32.const 0 - local.set $3 - loop $loop|1 - local.get $3 - i32.const 10 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 10 + i32.lt_s + if local.get $2 i32.const 512 call $~lib/array/Array<~lib/string/String>#push @@ -4185,9 +4166,8 @@ i32.const 1 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -4195,9 +4175,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index 44a15c941e..455f4bb8fa 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -185,26 +185,26 @@ (func $retain-release/scopeForComplex (; 11 ;) (param $0 i32) (local $1 i32) (local $2 i32) - loop $loop|0 + loop $for-loop|0 local.get $0 if i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $0 if local.get $1 i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $2 i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index 2913b644f7..586ac21e14 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -524,19 +524,16 @@ ) (func $retain-release/scopeFor (; 30 ;) (param $0 i32) (local $1 i32) - block $break|0 - loop $loop|0 - local.get $0 - i32.eqz - br_if $break|0 + loop $for-loop|0 + local.get $0 + if global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 local.get $1 call $~lib/rt/stub/__release - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $retain-release/scopeForComplex (; 31 ;) (param $0 i32) @@ -545,24 +542,20 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $0 - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $0 + if global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $2 - block $break|1 - i32.const 0 - local.set $3 - loop $loop|1 - local.get $0 - i32.eqz - br_if $break|1 - block $continue|1 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $0 + if + block $for-continue|1 global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $4 @@ -575,7 +568,7 @@ call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - br $continue|1 + br $for-continue|1 end local.get $4 call $~lib/rt/stub/__release @@ -584,9 +577,8 @@ i32.const 1 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/stub/__release @@ -594,9 +586,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $retain-release/scopeBreak (; 32 ;) (param $0 i32) diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index e2afe43d47..0c95307d15 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -623,7 +623,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -637,7 +637,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -657,14 +657,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 336 @@ -974,7 +974,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1033,14 +1033,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1052,12 +1052,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1076,7 +1076,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 701b17c923..49e3d42fe5 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -810,15 +810,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -832,15 +830,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -864,17 +860,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1265,17 +1259,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1338,21 +1330,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1360,19 +1349,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1390,9 +1376,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index 4e5360b881..db0fc32944 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -40,403 +40,285 @@ call $~lib/rt/__typeinfo i32.const 1073 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 4 call $~lib/rt/__typeinfo i32.const 49 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 5 call $~lib/rt/__typeinfo i32.const 49 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 6 call $~lib/rt/__typeinfo i32.const 1105 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 7 call $~lib/rt/__typeinfo i32.const 81 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 8 call $~lib/rt/__typeinfo i32.const 1169 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 9 call $~lib/rt/__typeinfo i32.const 145 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 10 call $~lib/rt/__typeinfo i32.const 1297 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 11 call $~lib/rt/__typeinfo i32.const 273 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 12 call $~lib/rt/__typeinfo i32.const 3217 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 13 call $~lib/rt/__typeinfo i32.const 3345 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 14 call $~lib/rt/__typeinfo i32.const 1075 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 15 call $~lib/rt/__typeinfo i32.const 51 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 16 call $~lib/rt/__typeinfo i32.const 1107 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 17 call $~lib/rt/__typeinfo i32.const 83 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 18 call $~lib/rt/__typeinfo i32.const 1171 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 19 call $~lib/rt/__typeinfo i32.const 147 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 20 call $~lib/rt/__typeinfo i32.const 1299 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 21 call $~lib/rt/__typeinfo i32.const 275 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 22 call $~lib/rt/__typeinfo i32.const 3219 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 23 call $~lib/rt/__typeinfo i32.const 3347 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 24 call $~lib/rt/__typeinfo i32.const 531 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 26 call $~lib/rt/__typeinfo i32.const 8339 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 27 call $~lib/rt/__typeinfo i32.const 12435 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 28 call $~lib/rt/__typeinfo i32.const 1076 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 29 call $~lib/rt/__typeinfo i32.const 52 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 30 call $~lib/rt/__typeinfo i32.const 1108 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 31 call $~lib/rt/__typeinfo i32.const 84 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 32 call $~lib/rt/__typeinfo i32.const 1172 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 33 call $~lib/rt/__typeinfo i32.const 148 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 34 call $~lib/rt/__typeinfo i32.const 1300 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 35 call $~lib/rt/__typeinfo i32.const 276 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 36 call $~lib/rt/__typeinfo i32.const 3220 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 37 call $~lib/rt/__typeinfo i32.const 3348 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 38 call $~lib/rt/__typeinfo i32.const 532 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 39 call $~lib/rt/__typeinfo i32.const 8340 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 40 call $~lib/rt/__typeinfo i32.const 12436 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 41 call $~lib/rt/__typeinfo i32.const 263224 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 42 call $~lib/rt/__typeinfo i32.const 656472 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 43 call $~lib/rt/__typeinfo i32.const 591000 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 44 call $~lib/rt/__typeinfo i32.const 558360 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 45 call $~lib/rt/__typeinfo i32.const 541208 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 46 call $~lib/rt/__typeinfo i32.const 4260920 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 47 call $~lib/rt/__typeinfo i32.const 6358072 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 48 call $~lib/rt/__typeinfo i32.const 549016 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 49 call $~lib/rt/__typeinfo i32.const 553112 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 50 call $~lib/rt/__typeinfo i32.const 6369432 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 51 call $~lib/rt/__typeinfo i32.const 1639576 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 52 call $~lib/rt/__typeinfo i32.const 16 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 53 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 54 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 56 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 58 call $~lib/rt/__typeinfo i32.const 16 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 59 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 61 call $~lib/rt/__typeinfo i32.const 16 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 62 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 64 call $~lib/rt/__typeinfo - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 66 call $~lib/rt/__typeinfo i32.const 16 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 i32.const 67 call $~lib/rt/__typeinfo i32.const 16 i32.ne - if - br $folding-inner0 - end + br_if $folding-inner0 return end i32.const 0 diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index e29ed15655..96e7d83cf4 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -625,7 +625,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -639,7 +639,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -659,14 +659,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 320 @@ -976,7 +976,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1035,14 +1035,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1054,12 +1054,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1078,7 +1078,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index 19b6b64ed4..8d1d14f017 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -804,15 +804,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -826,15 +824,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -858,17 +854,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1259,17 +1253,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1332,21 +1324,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1354,19 +1343,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1384,9 +1370,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index d89d89c35e..c3b9257dbb 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -5,7 +5,7 @@ (start $start) (func $start:scoped (; 0 ;) (local $0 i32) - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 1 i32.lt_s @@ -14,12 +14,12 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 1 i32.lt_s @@ -28,7 +28,7 @@ i32.const 1 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end ) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index 1c7075b075..0087280b07 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -20,42 +20,36 @@ (local $1 i32) (local $2 i64) (local $3 f32) - block $break|0 - i32.const 0 - local.set $0 - loop $loop|0 - local.get $0 - i32.const 1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 1 + i32.lt_s + if nop local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 1 + i32.lt_s + if local.get $1 drop local.get $1 i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end i64.const 5 local.set $2 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index e7b2b6de82..339119d745 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -677,7 +677,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -691,7 +691,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -711,14 +711,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 656 @@ -1030,7 +1030,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1089,14 +1089,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1108,12 +1108,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1132,7 +1132,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index e2a72c9367..963fc4f402 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -887,15 +887,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -909,15 +907,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -941,17 +937,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1344,17 +1338,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1417,21 +1409,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1439,19 +1428,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1469,9 +1455,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a5bbb871a6..a5001f1dd9 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -842,7 +842,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -856,7 +856,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -876,14 +876,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 8672 @@ -1195,7 +1195,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1254,14 +1254,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1273,12 +1273,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1297,7 +1297,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2436,7 +2436,7 @@ i32.const 1 return end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -2451,14 +2451,12 @@ if i32.const 0 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -2516,7 +2514,7 @@ select end local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -2532,7 +2530,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -2582,7 +2580,7 @@ return end end - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -2597,14 +2595,12 @@ if i32.const 0 return - else - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|0 end - unreachable + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|0 end end i32.const 1 @@ -3841,7 +3837,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 local.get $0 @@ -3869,14 +3865,12 @@ if local.get $2 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const -1 @@ -3919,7 +3913,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 local.get $0 @@ -3944,17 +3938,16 @@ local.get $0 local.get $1 call_indirect (type $i32_i32_i32_=>_i32) + i32.eqz if - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 - else i32.const 0 return end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -3997,7 +3990,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 local.get $0 @@ -4025,14 +4018,12 @@ if i32.const 1 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 0 @@ -4073,22 +4064,21 @@ (local $2 i32) (local $3 i32) (local $4 i32) - block $break|0 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 local.get $0 i32.load offset=12 - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - local.get $0 - i32.load offset=12 - local.tee $4 - local.get $3 - local.get $4 - i32.lt_s - select - i32.ge_s - br_if $break|0 + local.tee $4 + local.get $3 + local.get $4 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -4106,9 +4096,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $start:std/array~anonymous|17 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -4134,7 +4123,7 @@ local.get $1 i32.eqz if - loop $loop|0 + loop $for-loop|0 local.get $3 i32.const 4 i32.lt_s @@ -4146,12 +4135,12 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end i32.const 0 local.set $3 - loop $loop|1 + loop $for-loop|1 local.get $3 i32.const 100 i32.lt_s @@ -4165,12 +4154,12 @@ i32.const 1 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end end i32.const 0 local.set $3 - loop $loop|2 + loop $for-loop|2 local.get $3 i32.const 100 i32.lt_s @@ -4182,12 +4171,12 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end end i32.const 0 local.set $3 - loop $loop|3 + loop $for-loop|3 local.get $3 i32.const 100 i32.lt_s @@ -4201,7 +4190,7 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end end end @@ -4244,7 +4233,7 @@ local.tee $4 i32.load offset=4 local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 local.get $0 @@ -4277,7 +4266,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $4 @@ -4331,7 +4320,7 @@ local.tee $5 i32.load offset=4 local.set $6 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 local.get $0 @@ -4367,7 +4356,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $5 @@ -4409,7 +4398,7 @@ local.get $0 i32.load offset=12 local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 local.get $0 @@ -4445,7 +4434,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $4 @@ -4495,7 +4484,7 @@ local.get $0 i32.load offset=12 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $4 local.get $0 @@ -4526,7 +4515,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4570,7 +4559,7 @@ i32.const 1 i32.sub local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $3 i32.const 0 i32.ge_s @@ -4594,7 +4583,7 @@ i32.const 1 i32.sub local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4702,7 +4691,7 @@ (local $4 f32) (local $5 f32) (local $6 i32) - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -4769,7 +4758,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end ) @@ -4798,7 +4787,7 @@ i32.const 1 i32.sub local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $3 i32.const 0 i32.gt_s @@ -4895,14 +4884,14 @@ i32.const 1 i32.sub local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 i32.const 1 i32.sub local.set $3 - loop $loop|2 + loop $for-loop|2 local.get $3 i32.const 2 i32.ge_s @@ -5014,7 +5003,7 @@ i32.const 1 i32.sub local.set $3 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -5142,7 +5131,7 @@ i32.const 1 return end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -5181,7 +5170,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -5192,7 +5181,7 @@ (local $4 f64) (local $5 f64) (local $6 i32) - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -5259,7 +5248,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end ) @@ -5288,7 +5277,7 @@ i32.const 1 i32.sub local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $3 i32.const 0 i32.gt_s @@ -5385,14 +5374,14 @@ i32.const 1 i32.sub local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 i32.const 1 i32.sub local.set $3 - loop $loop|2 + loop $for-loop|2 local.get $3 i32.const 2 i32.ge_s @@ -5504,7 +5493,7 @@ i32.const 1 i32.sub local.set $3 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -5653,7 +5642,7 @@ i32.const 1 return end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -5692,7 +5681,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -5703,12 +5692,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - loop $loop|0 - block $break|0 - local.get $4 - local.get $1 - i32.ge_s - br_if $break|0 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -5772,7 +5760,7 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end end ) @@ -5801,7 +5789,7 @@ i32.const 1 i32.sub local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $4 i32.const 0 i32.gt_s @@ -5899,14 +5887,14 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end end local.get $1 i32.const 1 i32.sub local.set $4 - loop $loop|2 + loop $for-loop|2 local.get $4 i32.const 2 i32.ge_s @@ -6019,7 +6007,7 @@ i32.const 1 i32.sub local.set $4 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -6119,7 +6107,7 @@ local.get $0 call $~lib/array/Array#constructor local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $0 i32.lt_s @@ -6136,7 +6124,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -6191,7 +6179,7 @@ local.get $0 call $~lib/array/Array#constructor local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $0 i32.lt_s @@ -6208,7 +6196,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -6221,7 +6209,7 @@ local.get $0 i32.load offset=12 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -6243,14 +6231,12 @@ if i32.const 0 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -6355,7 +6341,7 @@ local.get $1 i32.const 2 i32.store offset=12 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 2 i32.lt_s @@ -6378,7 +6364,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6456,7 +6442,7 @@ local.get $0 i32.load offset=12 local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s @@ -6484,18 +6470,16 @@ call $~lib/rt/pure/__release i32.const 0 return - else - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -6536,7 +6520,7 @@ local.get $1 i32.const 512 i32.store offset=12 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 512 i32.lt_s @@ -6560,7 +6544,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6582,7 +6566,7 @@ local.get $0 i32.load offset=12 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -6609,18 +6593,16 @@ call $~lib/rt/pure/__release i32.const 0 return - else - local.get $2 - call $~lib/rt/pure/__release - local.get $3 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|0 end - unreachable + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + call $~lib/rt/pure/__release + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end end i32.const 1 @@ -6841,7 +6823,7 @@ i32.const 1 return end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s @@ -6855,17 +6837,8 @@ call $~lib/array/Array#__get local.tee $4 call $~lib/string/String.__eq + i32.eqz if - local.get $3 - call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 - else local.get $3 call $~lib/rt/pure/__release local.get $4 @@ -6873,7 +6846,15 @@ i32.const 0 return end - unreachable + local.get $3 + call $~lib/rt/pure/__release + local.get $4 + call $~lib/rt/pure/__release + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -6975,7 +6956,7 @@ (local $5 i32) i32.const 5168 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $0 i32.lt_s @@ -7011,7 +6992,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7033,7 +7014,7 @@ local.get $0 i32.const 400 i32.store offset=12 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 400 i32.lt_s @@ -7053,7 +7034,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -7179,7 +7160,7 @@ local.set $3 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $2 i32.lt_s @@ -7231,7 +7212,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -7470,7 +7451,7 @@ local.set $3 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $6 local.get $4 i32.lt_s @@ -7508,7 +7489,7 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end end local.get $7 @@ -7632,7 +7613,7 @@ local.set $3 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $6 local.get $4 i32.lt_s @@ -7670,7 +7651,7 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end end local.get $7 @@ -8128,7 +8109,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -8144,7 +8125,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -8216,7 +8197,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -8232,7 +8213,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 @@ -8795,7 +8776,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -8833,7 +8814,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -8909,7 +8890,7 @@ local.get $5 call $~lib/string/String#get:length local.set $8 - loop $loop|0 + loop $for-loop|0 local.get $4 local.get $6 i32.lt_s @@ -8980,7 +8961,7 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -9077,7 +9058,7 @@ i32.const 5408 call $~lib/string/String#get:length local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $4 local.get $5 i32.lt_s @@ -9144,7 +9125,7 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -9297,7 +9278,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -9333,7 +9314,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -9430,7 +9411,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -9468,7 +9449,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -9700,7 +9681,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -9738,7 +9719,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -9932,7 +9913,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -9970,7 +9951,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -10047,7 +10028,7 @@ i32.const 5408 call $~lib/string/String#get:length local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $5 i32.lt_s @@ -10118,7 +10099,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -10238,7 +10219,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -10274,7 +10255,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -10351,7 +10332,7 @@ i32.const 5408 call $~lib/string/String#get:length local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $5 i32.lt_s @@ -10422,7 +10403,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -10520,7 +10501,7 @@ i32.const 5408 call $~lib/string/String#get:length local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $5 i32.lt_s @@ -10591,7 +10572,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -10691,7 +10672,7 @@ i32.const 5408 call $~lib/string/String#get:length local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $5 i32.lt_s @@ -10762,7 +10743,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -14627,7 +14608,7 @@ end i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -14639,7 +14620,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end global.get $std/array/arr diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index a7044f5462..8cfca5c25e 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -1023,15 +1023,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -1045,15 +1043,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -1077,17 +1073,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1480,17 +1474,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1553,21 +1545,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1575,19 +1564,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1605,9 +1591,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4147,15 +4132,13 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4177,9 +4160,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -4250,13 +4232,11 @@ select end local.set $3 - block $break|0 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $4 local.get $2 i32.const 2 @@ -4268,9 +4248,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__retain @@ -4351,15 +4330,13 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4381,9 +4358,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -5047,15 +5023,13 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/array/Array#__get @@ -5077,9 +5051,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -6075,26 +6048,24 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - i32.const 0 - local.set $2 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 local.get $0 i32.load offset=12 - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6116,9 +6087,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 ) @@ -6212,26 +6182,24 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - i32.const 0 - local.set $2 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 local.get $0 i32.load offset=12 - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6254,9 +6222,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 ) @@ -6337,26 +6304,24 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - i32.const 0 - local.set $2 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 local.get $0 i32.load offset=12 - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6378,9 +6343,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 ) @@ -6459,26 +6423,24 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - i32.const 0 - local.set $2 + i32.const 0 + local.set $2 + local.get $0 + i32.load offset=12 + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + local.tee $4 local.get $0 i32.load offset=12 - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - local.tee $4 - local.get $0 - i32.load offset=12 - local.tee $5 - local.get $4 - local.get $5 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $5 + local.get $4 + local.get $5 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6496,9 +6458,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $start:std/array~anonymous|17 (; 109 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -6550,15 +6511,13 @@ i32.const 0 i32.eq if - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - i32.const 4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + i32.const 4 + i32.lt_s + if local.get $2 call $~lib/array/Array#pop drop @@ -6566,19 +6525,16 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|1 - i32.const 0 - local.set $3 - loop $loop|1 - local.get $3 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $3 + loop $for-loop|1 + local.get $3 + i32.const 100 + i32.lt_s + if local.get $2 i32.const 100 local.get $3 @@ -6589,19 +6545,16 @@ i32.const 1 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + i32.const 100 + i32.lt_s + if local.get $2 call $~lib/array/Array#pop drop @@ -6609,19 +6562,16 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 100 + i32.lt_s + if local.get $2 local.get $3 i32.const 200 @@ -6632,9 +6582,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end end local.get $1 @@ -6690,23 +6639,21 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6732,9 +6679,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -6810,23 +6756,21 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + local.tee $6 + local.get $0 + i32.load offset=12 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $0 @@ -6852,9 +6796,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -6917,26 +6860,24 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $2 - block $break|0 - i32.const 0 - local.set $3 + i32.const 0 + local.set $3 + local.get $0 + i32.load offset=12 + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + local.tee $5 local.get $0 i32.load offset=12 - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - local.tee $5 - local.get $0 - i32.load offset=12 - local.tee $6 - local.get $5 - local.get $6 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $6 + local.get $5 + local.get $6 + i32.lt_s + select + i32.lt_s + if local.get $0 i32.load offset=4 local.get $3 @@ -6962,9 +6903,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $2 ) @@ -7047,26 +6987,24 @@ (local $7 i32) local.get $2 local.set $3 - block $break|0 - i32.const 0 - local.set $4 + i32.const 0 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $5 + local.tee $6 local.get $0 i32.load offset=12 - local.set $5 - loop $loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7086,9 +7024,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -7131,26 +7068,24 @@ (local $7 i32) local.get $2 local.set $3 - block $break|0 - i32.const 0 - local.set $4 + i32.const 0 + local.set $4 + local.get $0 + i32.load offset=12 + local.set $5 + loop $for-loop|0 + local.get $4 + local.get $5 + local.tee $6 local.get $0 i32.load offset=12 - local.set $5 - loop $loop|0 - local.get $4 - local.get $5 - local.tee $6 - local.get $0 - i32.load offset=12 - local.tee $7 - local.get $6 - local.get $7 - i32.lt_s - select - i32.lt_s - i32.eqz - br_if $break|0 + local.tee $7 + local.get $6 + local.get $7 + i32.lt_s + select + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7170,9 +7105,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -7258,18 +7192,16 @@ (local $4 i32) local.get $2 local.set $3 - block $break|0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $4 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7289,9 +7221,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -7331,18 +7262,16 @@ (local $4 i32) local.get $2 local.set $3 - block $break|0 - local.get $0 - i32.load offset=12 - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $4 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $0 + i32.load offset=12 + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $4 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7362,9 +7291,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -7554,15 +7482,13 @@ (local $5 i32) (local $6 f32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -7631,9 +7557,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/util/sort/weakHeapSort (; 149 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -7657,21 +7582,19 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 - local.get $4 - i32.const 0 - local.get $3 - call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + local.get $4 + i32.const 0 + local.get $3 + call $~lib/memory/memory.fill + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + if local.get $5 local.set $6 block $break|1 @@ -7774,21 +7697,18 @@ i32.const 1 i32.sub local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|2 - local.get $5 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + if local.get $0 f32.load local.set $9 @@ -7911,9 +7831,8 @@ i32.const 1 i32.sub local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/rt/tlsf/__free @@ -8099,16 +8018,14 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + block $for-continue|0 local.get $0 local.get $3 call $~lib/array/Array#__get @@ -8126,7 +8043,7 @@ i32.const 0 end if - br $continue|0 + br $for-continue|0 end local.get $0 local.get $3 @@ -8150,9 +8067,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -8168,15 +8084,13 @@ (local $5 i32) (local $6 f64) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 3 @@ -8245,9 +8159,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/util/sort/weakHeapSort (; 155 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -8275,17 +8188,15 @@ i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + if local.get $5 local.set $6 block $break|1 @@ -8388,21 +8299,18 @@ i32.const 1 i32.sub local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|2 - local.get $5 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + if local.get $0 f64.load local.set $9 @@ -8525,9 +8433,8 @@ i32.const 1 i32.sub local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/rt/tlsf/__free @@ -8746,16 +8653,14 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if + block $for-continue|0 local.get $0 local.get $3 call $~lib/array/Array#__get @@ -8773,7 +8678,7 @@ i32.const 0 end if - br $continue|0 + br $for-continue|0 end local.get $0 local.get $3 @@ -8797,9 +8702,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -8815,15 +8719,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -8892,9 +8794,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/util/sort/weakHeapSort (; 164 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -8922,17 +8823,15 @@ i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + if local.get $5 local.set $6 block $break|1 @@ -9035,21 +8934,18 @@ i32.const 1 i32.sub local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|2 - local.get $5 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + if local.get $0 i32.load local.set $9 @@ -9172,9 +9068,8 @@ i32.const 1 i32.sub local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/rt/tlsf/__free @@ -9292,15 +9187,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -9369,9 +9262,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/util/sort/weakHeapSort (; 169 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -9399,17 +9291,15 @@ i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + if local.get $5 local.set $6 block $break|1 @@ -9512,21 +9402,18 @@ i32.const 1 i32.sub local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|2 - local.get $5 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + if local.get $0 i32.load local.set $9 @@ -9649,9 +9536,8 @@ i32.const 1 i32.sub local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/rt/tlsf/__free @@ -9774,15 +9660,13 @@ local.get $0 call $~lib/array/Array#constructor local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 local.get $2 local.get $0 @@ -9795,9 +9679,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -9863,15 +9746,13 @@ local.get $0 call $~lib/array/Array#constructor local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 local.get $2 call $~lib/math/NativeMath.random @@ -9884,9 +9765,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -9902,18 +9782,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if i32.const 2 global.set $~lib/argc local.get $0 @@ -9940,9 +9818,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -10109,15 +9986,13 @@ local.get $0 call $~lib/array/Array<~lib/array/Array>#constructor local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if i32.const 0 i32.const 1 call $~lib/array/Array#constructor @@ -10140,9 +10015,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -10174,15 +10048,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -10259,9 +10131,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/array/Array<~lib/array/Array>#sort (; 190 ;) (param $0 i32) (param $1 i32) (result i32) @@ -10390,18 +10261,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/array/Array>#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/array/Array>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if i32.const 2 global.set $~lib/argc local.get $0 @@ -10438,9 +10307,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -10589,15 +10457,13 @@ local.get $0 call $~lib/array/Array>#constructor local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 local.get $2 i32.const 0 @@ -10615,9 +10481,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -10647,15 +10512,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -10732,9 +10595,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/array/Array>#sort (; 203 ;) (param $0 i32) (param $1 i32) (result i32) @@ -10863,18 +10725,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array>#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if i32.const 2 global.set $~lib/argc local.get $0 @@ -10911,9 +10771,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -10952,15 +10811,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -11037,9 +10894,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/array/Array<~lib/string/String | null>#sort (; 210 ;) (param $0 i32) (param $1 i32) (result i32) @@ -11156,18 +11012,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String | null>#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String | null>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if i32.const 2 global.set $~lib/argc local.get $0 @@ -11204,9 +11058,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -11631,15 +11484,13 @@ return end end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get @@ -11671,9 +11522,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -11840,15 +11690,13 @@ (local $7 i32) i32.const 5168 local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 global.get $std/array/charset call $~lib/math/NativeMath.random @@ -11885,9 +11733,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -11970,15 +11817,13 @@ local.get $0 call $~lib/array/Array<~lib/string/String>#constructor local.set $1 - block $break|0 - i32.const 0 - local.set $2 - loop $loop|0 - local.get $2 - local.get $0 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + loop $for-loop|0 + local.get $2 + local.get $0 + i32.lt_s + if local.get $1 local.get $2 call $~lib/math/NativeMath.random @@ -11994,9 +11839,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -12006,15 +11850,13 @@ (local $5 i32) (local $6 i32) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 2 @@ -12091,9 +11933,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/array/Array<~lib/string/String>#sort (; 232 ;) (param $0 i32) (param $1 i32) (result i32) @@ -12222,18 +12063,16 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - i32.const 1 - local.set $2 - local.get $0 - call $~lib/array/Array<~lib/string/String>#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 1 + local.set $2 + local.get $0 + call $~lib/array/Array<~lib/string/String>#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if i32.const 2 global.set $~lib/argc local.get $0 @@ -12270,9 +12109,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -12603,15 +12441,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.add @@ -12660,9 +12496,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -13120,15 +12955,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -13164,9 +12997,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -13363,15 +13195,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -13407,9 +13237,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -14034,15 +13863,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -14054,9 +13881,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -14145,15 +13971,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -14165,9 +13989,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 @@ -14926,15 +14749,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -14970,9 +14791,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -15083,15 +14903,13 @@ local.set $5 i32.const 0 local.set $6 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -15125,9 +14943,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $9 @@ -15144,15 +14961,13 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $11 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -15215,9 +15030,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 local.get $3 @@ -15359,15 +15173,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -15441,9 +15253,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -15593,15 +15404,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -15675,9 +15484,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -15904,15 +15712,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 0 @@ -15948,9 +15754,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -16126,15 +15931,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -16170,9 +15973,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -16632,15 +16434,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -16676,9 +16476,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -16982,15 +16781,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -17026,9 +16823,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -17169,15 +16965,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -17251,9 +17045,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -17448,15 +17241,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 0 @@ -17492,9 +17283,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -17630,15 +17420,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -17712,9 +17500,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -17874,15 +17661,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -17956,9 +17741,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -18113,15 +17897,13 @@ local.get $2 call $~lib/string/String#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -18195,9 +17977,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -22796,15 +22577,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $76 - loop $loop|0 - local.get $76 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $76 + loop $for-loop|0 + local.get $76 + i32.const 100 + i32.lt_s + if global.get $std/array/arr call $~lib/array/Array#pop drop @@ -22812,9 +22591,8 @@ i32.const 1 i32.add local.set $76 - br $loop|0 + br $for-loop|0 end - unreachable end global.get $std/array/arr i32.const 0 diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 7f0f43ceb4..3d197caa7e 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -631,7 +631,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -645,7 +645,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -665,14 +665,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 688 @@ -984,7 +984,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1043,14 +1043,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1062,12 +1062,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1086,7 +1086,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 56d71b1007..7ad1ca8ced 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -811,15 +811,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -833,15 +831,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -865,17 +861,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1268,17 +1262,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1341,21 +1333,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1363,19 +1352,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1393,9 +1379,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index e96889c47c..c48aa2f9b9 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -638,7 +638,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -652,7 +652,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -672,14 +672,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 608 @@ -991,7 +991,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1050,14 +1050,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1069,12 +1069,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1093,7 +1093,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index f4e818ce4a..3d95272ead 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -818,15 +818,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -840,15 +838,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -872,17 +868,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1275,17 +1269,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1348,21 +1340,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1370,19 +1359,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1400,9 +1386,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index ffe00033f1..c87a5f46fa 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -17,23 +17,22 @@ local.get $0 local.tee $2 if - block $break|0 - i32.const 0 - local.set $0 - local.get $2 - i32.const 16 - i32.sub - i32.load offset=12 - i32.const 1 - i32.shr_u - i32.const 1 - i32.shl - local.set $3 - loop $loop|0 - local.get $0 - local.get $3 - i32.ge_u - br_if $break|0 + i32.const 0 + local.set $0 + local.get $2 + i32.const 16 + i32.sub + i32.load offset=12 + i32.const 1 + i32.shr_u + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_u + if local.get $1 local.get $0 local.get $2 @@ -47,9 +46,8 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end end ) diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index ccb30f0335..46f063526d 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -38,20 +38,18 @@ i32.const 0 i32.ne if - block $break|0 - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $1 local.get $0 local.get $2 @@ -65,9 +63,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end end local.get $1 diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 5b227178dc..8d5b6b0897 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -653,7 +653,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -667,7 +667,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -687,14 +687,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 880 @@ -1006,7 +1006,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1065,14 +1065,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1084,12 +1084,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1108,7 +1108,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2739,7 +2739,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -2770,7 +2770,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -2862,7 +2862,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -2893,7 +2893,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -3665,7 +3665,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -3721,14 +3721,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -3745,7 +3743,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -3821,14 +3819,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -3855,7 +3851,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -3886,24 +3882,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -3911,7 +3891,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -3940,7 +3935,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -3989,14 +3984,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -4013,7 +4006,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -4064,14 +4057,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -4418,7 +4409,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -4449,7 +4440,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -4797,7 +4788,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -4849,14 +4840,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -4873,7 +4862,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -4943,14 +4932,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -4977,7 +4964,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -5008,24 +4995,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -5033,7 +5004,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -5062,7 +5048,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -5109,14 +5095,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -5133,7 +5117,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -5182,14 +5166,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -5652,7 +5634,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -5683,7 +5665,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6082,7 +6064,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -6138,14 +6120,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -6162,7 +6142,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -6238,14 +6218,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -6272,7 +6250,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -6303,24 +6281,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -6328,7 +6290,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -6357,7 +6334,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -6406,14 +6383,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -6430,7 +6405,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -6481,14 +6456,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -6835,7 +6808,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -6866,7 +6839,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7216,7 +7189,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -7268,14 +7241,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -7292,7 +7263,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -7362,14 +7333,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -7396,7 +7365,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -7427,24 +7396,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -7452,7 +7405,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -7481,7 +7449,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -7528,14 +7496,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -7552,7 +7518,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -7601,14 +7567,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -7691,7 +7655,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7722,7 +7686,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7800,7 +7764,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -7848,14 +7812,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -7872,7 +7834,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -7936,14 +7898,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -7970,7 +7930,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -8001,24 +7961,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -8026,7 +7970,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -8055,7 +8014,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -8100,14 +8059,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -8124,7 +8081,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -8171,14 +8128,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -8272,7 +8227,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -8303,7 +8258,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8350,7 +8305,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -8398,14 +8353,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -8422,7 +8375,7 @@ end i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -8486,14 +8439,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -8520,7 +8471,7 @@ local.set $5 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $3 i32.load offset=12 @@ -8551,24 +8502,8 @@ i32.const 20 i32.sub call $~lib/map/Map#has + i32.eqz if - local.get $4 - local.get $2 - local.get $2 - call $~lib/map/Map#set - local.get $5 - local.get $7 - i32.const 20 - i32.sub - local.tee $2 - local.get $2 - call $~lib/map/Map#set - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -8576,7 +8511,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $2 + call $~lib/map/Map#set + local.get $5 + local.get $7 + i32.const 20 + i32.sub + local.tee $2 + local.get $2 + call $~lib/map/Map#set + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $4 @@ -8605,7 +8555,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -8650,14 +8600,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -8674,7 +8622,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -8721,14 +8669,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -9261,7 +9207,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -9292,7 +9238,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -9317,7 +9263,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9348,7 +9294,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -9771,7 +9717,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i64.const 100 i64.lt_s @@ -9821,14 +9767,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -9845,7 +9789,7 @@ end i64.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i64.const 100 i64.lt_s @@ -9912,14 +9856,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -9944,7 +9886,7 @@ local.set $5 call $~lib/map/Map#constructor local.set $6 - loop $loop|2 + loop $for-loop|2 local.get $2 local.get $4 i32.load offset=12 @@ -9976,24 +9918,8 @@ i32.sub i64.extend_i32_s call $~lib/map/Map#has + i32.eqz if - local.get $5 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $6 - local.get $3 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -10001,7 +9927,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end local.get $5 @@ -10030,7 +9971,7 @@ end i64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i64.const 50 i64.lt_s @@ -10076,14 +10017,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -10100,7 +10039,7 @@ end i64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i64.const 50 i64.lt_s @@ -10148,14 +10087,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -10249,7 +10186,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -10280,7 +10217,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -10327,7 +10264,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i64.const 100 i64.lt_u @@ -10377,14 +10314,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -10401,7 +10336,7 @@ end i64.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i64.const 100 i64.lt_u @@ -10468,14 +10403,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -10500,7 +10433,7 @@ local.set $5 call $~lib/map/Map#constructor local.set $6 - loop $loop|2 + loop $for-loop|2 local.get $2 local.get $4 i32.load offset=12 @@ -10532,24 +10465,8 @@ i32.sub i64.extend_i32_s call $~lib/map/Map#has + i32.eqz if - local.get $5 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $6 - local.get $3 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -10557,7 +10474,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end local.get $5 @@ -10586,7 +10518,7 @@ end i64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i64.const 50 i64.lt_u @@ -10632,14 +10564,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -10656,7 +10586,7 @@ end i64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i64.const 50 i64.lt_u @@ -10704,14 +10634,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -11137,7 +11065,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -11168,7 +11096,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -11518,7 +11446,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 f32.const 100 f32.lt @@ -11568,14 +11496,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -11592,7 +11518,7 @@ end f32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 f32.const 100 f32.lt @@ -11659,14 +11585,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -11691,7 +11615,7 @@ local.set $5 call $~lib/map/Map#constructor local.set $6 - loop $loop|2 + loop $for-loop|2 local.get $2 local.get $4 i32.load offset=12 @@ -11723,24 +11647,8 @@ i32.sub f32.convert_i32_s call $~lib/map/Map#has + i32.eqz if - local.get $5 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $6 - local.get $3 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -11748,7 +11656,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end local.get $5 @@ -11777,7 +11700,7 @@ end f32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 f32.const 50 f32.lt @@ -11823,14 +11746,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -11847,7 +11768,7 @@ end f32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 f32.const 50 f32.lt @@ -11895,14 +11816,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -12328,7 +12247,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $2 i32.lt_s @@ -12359,7 +12278,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -12752,7 +12671,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 f64.const 100 f64.lt @@ -12802,14 +12721,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|0 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -12826,7 +12743,7 @@ end f64.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 f64.const 100 f64.lt @@ -12893,14 +12810,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -12925,7 +12840,7 @@ local.set $5 call $~lib/map/Map#constructor local.set $6 - loop $loop|2 + loop $for-loop|2 local.get $2 local.get $4 i32.load offset=12 @@ -12957,24 +12872,8 @@ i32.sub f64.convert_i32_s call $~lib/map/Map#has + i32.eqz if - local.get $5 - local.get $0 - local.get $0 - call $~lib/map/Map#set - local.get $6 - local.get $3 - i32.const 20 - i32.sub - local.tee $3 - local.get $3 - call $~lib/map/Map#set - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 32 @@ -12982,7 +12881,22 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $5 + local.get $0 + local.get $0 + call $~lib/map/Map#set + local.get $6 + local.get $3 + i32.const 20 + i32.sub + local.tee $3 + local.get $3 + call $~lib/map/Map#set + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|2 end end local.get $5 @@ -13011,7 +12925,7 @@ end f64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 f64.const 50 f64.lt @@ -13057,14 +12971,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -13081,7 +12993,7 @@ end f64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 f64.const 50 f64.lt @@ -13129,14 +13041,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|4 end end local.get $1 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 0e42b08349..e66454ebb8 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -829,15 +829,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -851,15 +849,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -883,17 +879,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1286,17 +1280,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1359,21 +1351,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1381,19 +1370,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1411,9 +1397,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4417,15 +4402,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -4453,9 +4436,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -4561,15 +4543,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -4597,9 +4577,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -5574,15 +5553,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -5642,9 +5619,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -5659,15 +5635,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -5746,9 +5720,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -5775,16 +5748,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -5835,9 +5806,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -5865,15 +5835,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -5927,9 +5895,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -5944,15 +5911,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -6009,9 +5974,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -6585,15 +6549,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -6621,9 +6583,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -6650,15 +6611,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -6686,9 +6645,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -7202,15 +7160,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -7266,9 +7222,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -7283,15 +7238,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -7364,9 +7317,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -7393,16 +7345,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -7453,9 +7403,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -7483,15 +7432,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -7543,9 +7490,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -7560,15 +7506,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -7623,9 +7567,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -8229,16 +8172,14 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 - local.get $1 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if + local.get $1 local.get $5 i32.const 12 i32.mul @@ -8265,9 +8206,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -8294,15 +8234,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -8330,9 +8268,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -8852,15 +8789,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -8920,9 +8855,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -8937,15 +8871,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -9024,9 +8956,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -9053,16 +8984,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -9113,9 +9042,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -9143,15 +9071,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -9205,9 +9131,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -9222,15 +9147,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -9287,9 +9210,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -9863,15 +9785,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -9899,9 +9819,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -9928,15 +9847,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -9964,9 +9881,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -10480,15 +10396,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -10544,9 +10458,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -10561,15 +10474,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -10642,9 +10553,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -10671,16 +10581,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -10731,9 +10639,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -10761,15 +10668,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -10821,9 +10726,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -10838,15 +10742,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -10901,9 +10803,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -11006,15 +10907,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -11042,9 +10941,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -11071,15 +10969,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -11107,9 +11003,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -11204,15 +11099,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -11264,9 +11157,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -11281,15 +11173,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -11356,9 +11246,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -11385,16 +11274,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -11445,9 +11332,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -11475,15 +11361,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -11533,9 +11417,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -11550,15 +11433,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_s + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -11611,9 +11492,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -12179,15 +12059,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -12215,9 +12093,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -12244,15 +12121,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -12280,9 +12155,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -12790,15 +12664,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -12850,9 +12722,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -12867,15 +12738,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -12942,9 +12811,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -12971,16 +12839,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $4 - block $break|2 - i32.const 0 - local.set $5 - loop $loop|2 - local.get $5 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $5 + loop $for-loop|2 + local.get $5 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $1 local.get $5 call $~lib/array/Array#__get @@ -13031,9 +12897,8 @@ i32.const 1 i32.add local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/map/Map#get:size @@ -13061,15 +12926,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $5 - loop $loop|3 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $5 + loop $for-loop|3 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -13119,9 +12982,8 @@ i32.const 1 i32.add local.set $5 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -13136,15 +12998,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $5 - loop $loop|4 - local.get $5 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $5 + loop $for-loop|4 + local.get $5 + i32.const 50 + i32.lt_u + if local.get $0 local.get $5 call $~lib/map/Map#has @@ -13197,9 +13057,8 @@ i32.const 1 i32.add local.set $5 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -13855,15 +13714,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -13891,9 +13748,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -13920,15 +13776,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -13956,9 +13810,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -14469,15 +14322,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -14531,9 +14382,8 @@ i64.const 1 i64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -14548,15 +14398,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 + i64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -14626,9 +14474,8 @@ i64.const 1 i64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -14655,16 +14502,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $5 - block $break|2 - i32.const 0 - local.set $6 - loop $loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $2 local.get $6 call $~lib/array/Array#__get @@ -14716,9 +14561,8 @@ i32.const 1 i32.add local.set $6 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/map/Map#get:size @@ -14746,15 +14590,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -14805,9 +14647,8 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -14822,15 +14663,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|4 + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_s + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -14884,9 +14723,8 @@ i64.const 1 i64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -15454,15 +15292,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -15490,9 +15326,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -15519,15 +15354,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -15555,9 +15388,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -16068,15 +15900,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|0 + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -16130,9 +15960,8 @@ i64.const 1 i64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -16147,15 +15976,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 0 - local.set $1 - loop $loop|1 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|1 + i64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -16225,9 +16052,8 @@ i64.const 1 i64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -16254,16 +16080,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $5 - block $break|2 - i32.const 0 - local.set $6 - loop $loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $2 local.get $6 call $~lib/array/Array#__get @@ -16315,9 +16139,8 @@ i32.const 1 i32.add local.set $6 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/map/Map#get:size @@ -16345,15 +16168,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|3 + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -16404,9 +16225,8 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -16421,15 +16241,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|4 + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -16483,9 +16301,8 @@ i64.const 1 i64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -17057,15 +16874,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -17093,9 +16908,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -17122,15 +16936,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 12 @@ -17158,9 +16970,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -17674,15 +17485,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 + f32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -17736,9 +17545,8 @@ f32.const 1 f32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -17753,15 +17561,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - f32.const 0 - local.set $1 - loop $loop|1 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 + f32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -17831,9 +17637,8 @@ f32.const 1 f32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -17860,16 +17665,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $5 - block $break|2 - i32.const 0 - local.set $6 - loop $loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $2 local.get $6 call $~lib/array/Array#__get @@ -17921,9 +17724,8 @@ i32.const 1 i32.add local.set $6 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/map/Map#get:size @@ -17951,15 +17753,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - f32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -18010,9 +17810,8 @@ f32.const 1 f32.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -18027,15 +17826,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - f32.const 0 - local.set $1 - loop $loop|4 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|4 + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -18089,9 +17886,8 @@ f32.const 1 f32.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -18663,15 +18459,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -18699,9 +18493,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -18728,15 +18521,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -18764,9 +18555,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.get $4 @@ -19280,15 +19070,13 @@ i32.const 0 call $~lib/map/Map#constructor local.set $0 - block $break|0 - f64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|0 + f64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -19342,9 +19130,8 @@ f64.const 1 f64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -19359,15 +19146,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - f64.const 0 - local.set $1 - loop $loop|1 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|1 + f64.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -19437,9 +19222,8 @@ f64.const 1 f64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -19466,16 +19250,14 @@ i32.const 0 call $~lib/map/Map#constructor local.set $5 - block $break|2 - i32.const 0 - local.set $6 - loop $loop|2 - local.get $6 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $6 + loop $for-loop|2 + local.get $6 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $2 local.get $6 call $~lib/array/Array#__get @@ -19527,9 +19309,8 @@ i32.const 1 i32.add local.set $6 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/map/Map#get:size @@ -19557,15 +19338,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - f64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|3 + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -19616,9 +19395,8 @@ f64.const 1 f64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/map/Map#get:size @@ -19633,15 +19411,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - f64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|4 + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if local.get $0 local.get $1 call $~lib/map/Map#has @@ -19695,9 +19471,8 @@ f64.const 1 f64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/map/Map#get:size diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 2a0105cefa..bd70dc0c69 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -36313,7 +36313,7 @@ call $~lib/bindings/Math/random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom - loop $loop|0 + loop $for-loop|0 local.get $2 f64.convert_i32_s f64.const 1e6 @@ -36330,13 +36330,8 @@ else i32.const 0 end + i32.eqz if - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 - else i32.const 0 i32.const 32 i32.const 2806 @@ -36344,7 +36339,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end call $~lib/bindings/Math/random @@ -36352,7 +36351,7 @@ call $~lib/math/NativeMath.seedRandom i32.const 0 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 f64.convert_i32_s f64.const 1e6 @@ -36369,13 +36368,8 @@ else i32.const 0 end + i32.eqz if - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|1 - else i32.const 0 i32.const 32 i32.const 2814 @@ -36383,7 +36377,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 end end f64.const -8.06684839057968 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index a804d96dab..ad2e45b0be 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -43551,16 +43551,14 @@ call $~lib/bindings/Math/random i64.reinterpret_f64 call $~lib/math/NativeMath.seedRandom - block $break|0 - i32.const 0 - local.set $0 - loop $loop|0 - local.get $0 - f64.convert_i32_s - f64.const 1e6 - f64.lt - i32.eqz - br_if $break|0 + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + f64.convert_i32_s + f64.const 1e6 + f64.lt + if call $~lib/math/NativeMath.random local.set $1 local.get $1 @@ -43586,25 +43584,22 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end call $~lib/bindings/Math/random i64.reinterpret_f64 local.set $2 local.get $2 call $~lib/math/NativeMath.seedRandom - block $break|1 - i32.const 0 - local.set $0 - loop $loop|1 - local.get $0 - f64.convert_i32_s - f64.const 1e6 - f64.lt - i32.eqz - br_if $break|1 + i32.const 0 + local.set $0 + loop $for-loop|1 + local.get $0 + f64.convert_i32_s + f64.const 1e6 + f64.lt + if call $~lib/math/NativeMathf.random local.set $3 local.get $3 @@ -43630,9 +43625,8 @@ i32.const 1 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end - unreachable end f64.const -8.06684839057968 f64.const -8 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index db04a26d92..44a04f6866 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -645,7 +645,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -659,7 +659,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -679,14 +679,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 688 @@ -998,7 +998,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1057,14 +1057,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1076,12 +1076,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1100,7 +1100,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2685,7 +2685,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -2716,7 +2716,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -2810,7 +2810,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -2832,13 +2832,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -2846,7 +2841,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -2863,7 +2862,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -2886,13 +2885,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -2900,7 +2894,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -2922,7 +2920,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -2933,18 +2931,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -2952,7 +2940,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -2970,7 +2967,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -3000,14 +2997,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -3024,7 +3019,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -3068,14 +3063,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -3386,7 +3379,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -3417,7 +3410,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -3509,7 +3502,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -3531,13 +3524,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -3545,7 +3533,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -3562,7 +3554,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -3585,13 +3577,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -3599,7 +3586,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -3621,7 +3612,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -3632,18 +3623,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -3651,7 +3632,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -3669,7 +3659,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -3699,14 +3689,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -3723,7 +3711,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -3767,14 +3755,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -4187,7 +4173,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -4218,7 +4204,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4314,7 +4300,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -4336,13 +4322,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -4350,7 +4331,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -4367,7 +4352,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -4390,13 +4375,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -4404,7 +4384,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -4426,7 +4410,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -4437,18 +4421,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -4456,7 +4430,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -4474,7 +4457,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -4504,14 +4487,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -4528,7 +4509,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -4572,14 +4553,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -4890,7 +4869,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -4921,7 +4900,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5015,7 +4994,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -5037,13 +5016,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -5051,7 +5025,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -5068,7 +5046,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -5091,13 +5069,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -5105,7 +5078,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -5127,7 +5104,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -5138,18 +5115,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -5157,7 +5124,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -5175,7 +5151,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -5205,14 +5181,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -5229,7 +5203,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -5273,14 +5247,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -5699,7 +5671,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -5730,7 +5702,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5822,7 +5794,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_s @@ -5844,13 +5816,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -5858,7 +5825,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -5875,7 +5846,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -5898,13 +5869,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -5912,7 +5878,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -5934,7 +5904,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -5945,18 +5915,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -5964,7 +5924,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -5982,7 +5951,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_s @@ -6012,14 +5981,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -6036,7 +6003,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_s @@ -6080,14 +6047,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -6177,7 +6142,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -6208,7 +6173,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -6220,7 +6185,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 100 i32.lt_u @@ -6242,13 +6207,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -6256,7 +6216,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -6273,7 +6237,7 @@ end i32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -6296,13 +6260,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -6310,7 +6269,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -6332,7 +6295,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.load offset=12 @@ -6343,18 +6306,8 @@ local.get $0 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $3 - local.get $2 - local.get $0 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -6362,7 +6315,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $3 + local.get $2 + local.get $0 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|2 end end local.get $3 @@ -6380,7 +6342,7 @@ end i32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i32.const 50 i32.lt_u @@ -6410,14 +6372,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -6434,7 +6394,7 @@ end i32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i32.const 50 i32.lt_u @@ -6478,14 +6438,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -6972,7 +6930,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -7003,7 +6961,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -7097,7 +7055,7 @@ (local $4 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i64.const 100 i64.lt_s @@ -7119,13 +7077,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -7133,7 +7086,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -7150,7 +7107,7 @@ end i64.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i64.const 100 i64.lt_s @@ -7173,13 +7130,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -7187,7 +7139,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -7207,7 +7163,7 @@ local.set $2 call $~lib/set/Set#constructor local.set $4 - loop $loop|2 + loop $for-loop|2 local.get $3 local.get $2 i32.load offset=12 @@ -7218,18 +7174,8 @@ local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -7237,7 +7183,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end local.get $4 @@ -7255,7 +7210,7 @@ end i64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i64.const 50 i64.lt_s @@ -7285,14 +7240,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -7309,7 +7262,7 @@ end i64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i64.const 50 i64.lt_s @@ -7353,14 +7306,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -7450,7 +7401,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -7481,7 +7432,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -7494,7 +7445,7 @@ (local $4 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 i64.const 100 i64.lt_u @@ -7516,13 +7467,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -7530,7 +7476,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -7547,7 +7497,7 @@ end i64.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 i64.const 100 i64.lt_u @@ -7570,13 +7520,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -7584,7 +7529,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -7604,7 +7553,7 @@ local.set $2 call $~lib/set/Set#constructor local.set $4 - loop $loop|2 + loop $for-loop|2 local.get $3 local.get $2 i32.load offset=12 @@ -7615,18 +7564,8 @@ local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -7634,7 +7573,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end local.get $4 @@ -7652,7 +7600,7 @@ end i64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 i64.const 50 i64.lt_u @@ -7682,14 +7630,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -7706,7 +7652,7 @@ end i64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 i64.const 50 i64.lt_u @@ -7750,14 +7696,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i64.const 1 - i64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + i64.const 1 + i64.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -8148,7 +8092,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -8179,7 +8123,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -8274,7 +8218,7 @@ (local $4 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 f32.const 100 f32.lt @@ -8296,13 +8240,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -8310,7 +8249,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -8327,7 +8270,7 @@ end f32.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 f32.const 100 f32.lt @@ -8350,13 +8293,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -8364,7 +8302,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -8384,7 +8326,7 @@ local.set $2 call $~lib/set/Set#constructor local.set $4 - loop $loop|2 + loop $for-loop|2 local.get $3 local.get $2 i32.load offset=12 @@ -8395,18 +8337,8 @@ local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -8414,7 +8346,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end local.get $4 @@ -8432,7 +8373,7 @@ end f32.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 f32.const 50 f32.lt @@ -8462,14 +8403,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -8486,7 +8425,7 @@ end f32.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 f32.const 50 f32.lt @@ -8530,14 +8469,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f32.const 1 - f32.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + f32.const 1 + f32.add + local.set $0 + br $for-loop|4 end end local.get $1 @@ -8928,7 +8865,7 @@ i32.store offset=12 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -8959,7 +8896,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -9054,7 +8991,7 @@ (local $4 i32) call $~lib/set/Set#constructor local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 f64.const 100 f64.lt @@ -9076,13 +9013,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|0 - else i32.const 0 i32.const 416 i32.const 8 @@ -9090,7 +9022,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|0 end end local.get $1 @@ -9107,7 +9043,7 @@ end f64.const 50 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 f64.const 100 f64.lt @@ -9130,13 +9066,8 @@ local.get $1 local.get $0 call $~lib/set/Set#has + i32.eqz if - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|1 - else i32.const 0 i32.const 416 i32.const 16 @@ -9144,7 +9075,11 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|1 end end local.get $1 @@ -9164,7 +9099,7 @@ local.set $2 call $~lib/set/Set#constructor local.set $4 - loop $loop|2 + loop $for-loop|2 local.get $3 local.get $2 i32.load offset=12 @@ -9175,18 +9110,8 @@ local.get $3 call $~lib/array/Array#__get call $~lib/set/Set#has + i32.eqz if - local.get $4 - local.get $2 - local.get $3 - call $~lib/array/Array#__get - call $~lib/set/Set#add - local.get $3 - i32.const 1 - i32.add - local.set $3 - br $loop|2 - else i32.const 0 i32.const 416 i32.const 24 @@ -9194,7 +9119,16 @@ call $~lib/builtins/abort unreachable end - unreachable + local.get $4 + local.get $2 + local.get $3 + call $~lib/array/Array#__get + call $~lib/set/Set#add + local.get $3 + i32.const 1 + i32.add + local.set $3 + br $for-loop|2 end end local.get $4 @@ -9212,7 +9146,7 @@ end f64.const 0 local.set $0 - loop $loop|3 + loop $for-loop|3 local.get $0 f64.const 50 f64.lt @@ -9242,14 +9176,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|3 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|3 end end local.get $1 @@ -9266,7 +9198,7 @@ end f64.const 0 local.set $0 - loop $loop|4 + loop $for-loop|4 local.get $0 f64.const 50 f64.lt @@ -9310,14 +9242,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - f64.const 1 - f64.add - local.set $0 - br $loop|4 end - unreachable + local.get $0 + f64.const 1 + f64.add + local.set $0 + br $for-loop|4 end end local.get $1 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 2818512f08..09b2e2c318 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -824,15 +824,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -846,15 +844,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -878,17 +874,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1281,17 +1275,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1354,21 +1346,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1376,19 +1365,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1406,9 +1392,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4352,15 +4337,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -4388,9 +4371,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -4511,15 +4493,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -4552,9 +4532,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -4569,15 +4548,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -4609,9 +4586,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -4632,16 +4608,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -4665,9 +4639,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -4683,15 +4656,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -4725,9 +4696,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -4742,15 +4712,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -4800,9 +4768,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -5314,15 +5281,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -5350,9 +5315,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -5471,15 +5435,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -5512,9 +5474,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -5529,15 +5490,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -5569,9 +5528,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -5592,16 +5550,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -5625,9 +5581,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -5643,15 +5598,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -5685,9 +5638,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -5702,15 +5654,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -5760,9 +5710,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -6302,15 +6251,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -6338,9 +6285,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -6461,15 +6407,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -6502,9 +6446,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -6519,16 +6462,14 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 - local.get $0 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if + local.get $0 local.get $1 call $~lib/set/Set#has i32.eqz @@ -6559,9 +6500,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -6582,16 +6522,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -6615,9 +6553,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -6633,15 +6570,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -6675,9 +6610,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -6692,15 +6626,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -6750,9 +6682,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -7264,15 +7195,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -7300,9 +7229,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -7421,15 +7349,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -7462,9 +7388,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -7479,15 +7404,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -7519,9 +7442,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -7542,16 +7464,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -7575,9 +7495,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -7593,15 +7512,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -7635,9 +7552,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -7652,15 +7568,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -7710,9 +7624,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -8260,15 +8173,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -8296,9 +8207,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -8415,15 +8325,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -8456,9 +8364,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -8473,15 +8380,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -8513,9 +8418,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -8536,16 +8440,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -8569,9 +8471,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -8587,15 +8488,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -8629,9 +8528,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -8646,15 +8544,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_s - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_s + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -8704,9 +8600,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -9212,15 +9107,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -9248,9 +9141,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -9367,15 +9259,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -9408,9 +9298,8 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -9425,15 +9314,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i32.const 100 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 100 + i32.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -9465,9 +9352,8 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -9488,16 +9374,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $2 - block $break|2 - i32.const 0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $1 local.get $3 @@ -9521,9 +9405,8 @@ i32.const 1 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $2 call $~lib/set/Set#get:size @@ -9539,15 +9422,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i32.const 0 - local.set $3 - loop $loop|3 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|3 + i32.const 0 + local.set $3 + loop $for-loop|3 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -9581,9 +9462,8 @@ i32.const 1 i32.add local.set $3 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -9598,15 +9478,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i32.const 0 - local.set $3 - loop $loop|4 - local.get $3 - i32.const 50 - i32.lt_u - i32.eqz - br_if $break|4 + i32.const 0 + local.set $3 + loop $for-loop|4 + local.get $3 + i32.const 50 + i32.lt_u + if local.get $0 local.get $3 call $~lib/set/Set#has @@ -9656,9 +9534,8 @@ i32.const 1 i32.add local.set $3 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -10254,15 +10131,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -10290,9 +10165,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -10411,15 +10285,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|0 + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -10452,9 +10324,8 @@ i64.const 1 i64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -10469,15 +10340,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i64.const 100 - i64.lt_s - i32.eqz - br_if $break|1 + i64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -10509,9 +10378,8 @@ i64.const 1 i64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -10532,16 +10400,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $3 - block $break|2 - i32.const 0 - local.set $4 - loop $loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $2 local.get $4 @@ -10565,9 +10431,8 @@ i32.const 1 i32.add local.set $4 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/set/Set#get:size @@ -10583,15 +10448,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|3 + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -10625,9 +10488,8 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -10642,15 +10504,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - i64.const 50 - i64.lt_s - i32.eqz - br_if $break|4 + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_s + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -10700,9 +10560,8 @@ i64.const 1 i64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -11210,15 +11069,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -11246,9 +11103,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -11367,15 +11223,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - i64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|0 + i64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + i64.const 100 + i64.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -11408,9 +11262,8 @@ i64.const 1 i64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -11425,15 +11278,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - i64.const 50 - local.set $1 - loop $loop|1 - local.get $1 - i64.const 100 - i64.lt_u - i32.eqz - br_if $break|1 + i64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + i64.const 100 + i64.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -11465,9 +11316,8 @@ i64.const 1 i64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -11488,16 +11338,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $3 - block $break|2 - i32.const 0 - local.set $4 - loop $loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $2 local.get $4 @@ -11521,9 +11369,8 @@ i32.const 1 i32.add local.set $4 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/set/Set#get:size @@ -11539,15 +11386,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - i64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|3 + i64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + i64.const 50 + i64.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -11581,9 +11426,8 @@ i64.const 1 i64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -11598,15 +11442,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - i64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - i64.const 50 - i64.lt_u - i32.eqz - br_if $break|4 + i64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + i64.const 50 + i64.lt_u + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -11656,9 +11498,8 @@ i64.const 1 i64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -12169,15 +12010,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 8 @@ -12205,9 +12044,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -12327,15 +12165,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - f32.const 0 - local.set $1 - loop $loop|0 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|0 + f32.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f32.const 100 + f32.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -12368,9 +12204,8 @@ f32.const 1 f32.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -12385,15 +12220,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - f32.const 50 - local.set $1 - loop $loop|1 - local.get $1 - f32.const 100 - f32.lt - i32.eqz - br_if $break|1 + f32.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f32.const 100 + f32.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -12425,9 +12258,8 @@ f32.const 1 f32.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -12448,16 +12280,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $3 - block $break|2 - i32.const 0 - local.set $4 - loop $loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $2 local.get $4 @@ -12481,9 +12311,8 @@ i32.const 1 i32.add local.set $4 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/set/Set#get:size @@ -12499,15 +12328,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - f32.const 0 - local.set $1 - loop $loop|3 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|3 + f32.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f32.const 50 + f32.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -12541,9 +12368,8 @@ f32.const 1 f32.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -12558,15 +12384,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - f32.const 0 - local.set $1 - loop $loop|4 - local.get $1 - f32.const 50 - f32.lt - i32.eqz - br_if $break|4 + f32.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f32.const 50 + f32.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -12616,9 +12440,8 @@ f32.const 1 f32.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -13129,15 +12952,13 @@ local.set $3 i32.const 0 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + local.get $2 + i32.lt_s + if local.get $1 local.get $5 i32.const 16 @@ -13165,9 +12986,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 ) @@ -13287,15 +13107,13 @@ i32.const 0 call $~lib/set/Set#constructor local.set $0 - block $break|0 - f64.const 0 - local.set $1 - loop $loop|0 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|0 + f64.const 0 + local.set $1 + loop $for-loop|0 + local.get $1 + f64.const 100 + f64.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -13328,9 +13146,8 @@ f64.const 1 f64.add local.set $1 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -13345,15 +13162,13 @@ call $~lib/builtins/abort unreachable end - block $break|1 - f64.const 50 - local.set $1 - loop $loop|1 - local.get $1 - f64.const 100 - f64.lt - i32.eqz - br_if $break|1 + f64.const 50 + local.set $1 + loop $for-loop|1 + local.get $1 + f64.const 100 + f64.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -13385,9 +13200,8 @@ f64.const 1 f64.add local.set $1 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -13408,16 +13222,14 @@ i32.const 0 call $~lib/set/Set#constructor local.set $3 - block $break|2 - i32.const 0 - local.set $4 - loop $loop|2 - local.get $4 - local.get $2 - call $~lib/array/Array#get:length - i32.lt_s - i32.eqz - br_if $break|2 + i32.const 0 + local.set $4 + loop $for-loop|2 + local.get $4 + local.get $2 + call $~lib/array/Array#get:length + i32.lt_s + if local.get $0 local.get $2 local.get $4 @@ -13441,9 +13253,8 @@ i32.const 1 i32.add local.set $4 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $3 call $~lib/set/Set#get:size @@ -13459,15 +13270,13 @@ call $~lib/builtins/abort unreachable end - block $break|3 - f64.const 0 - local.set $1 - loop $loop|3 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|3 + f64.const 0 + local.set $1 + loop $for-loop|3 + local.get $1 + f64.const 50 + f64.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -13501,9 +13310,8 @@ f64.const 1 f64.add local.set $1 - br $loop|3 + br $for-loop|3 end - unreachable end local.get $0 call $~lib/set/Set#get:size @@ -13518,15 +13326,13 @@ call $~lib/builtins/abort unreachable end - block $break|4 - f64.const 0 - local.set $1 - loop $loop|4 - local.get $1 - f64.const 50 - f64.lt - i32.eqz - br_if $break|4 + f64.const 0 + local.set $1 + loop $for-loop|4 + local.get $1 + f64.const 50 + f64.lt + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -13576,9 +13382,8 @@ f64.const 1 f64.add local.set $1 - br $loop|4 + br $for-loop|4 end - unreachable end local.get $0 call $~lib/set/Set#get:size diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 70bc6dd9d0..b98c92cb51 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -737,7 +737,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -751,7 +751,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -771,14 +771,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 21200 @@ -1064,7 +1064,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1123,14 +1123,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1142,12 +1142,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1166,7 +1166,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index 3b4c0ffe4a..d6db7552f4 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -930,15 +930,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -952,15 +950,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -984,17 +980,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1358,17 +1352,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1431,21 +1423,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1453,19 +1442,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1483,9 +1469,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 631c64ece1..7cfd2b443e 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -1209,7 +1209,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -1223,7 +1223,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -1243,14 +1243,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 27712 @@ -1536,7 +1536,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1595,14 +1595,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1614,12 +1614,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1638,7 +1638,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -2582,7 +2582,7 @@ local.get $4 i32.sub local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.le_s @@ -2592,17 +2592,16 @@ local.get $1 local.get $4 call $~lib/util/string/compareImpl + i32.eqz if - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 - else local.get $2 return end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const -1 @@ -2831,7 +2830,7 @@ i32.lt_s select local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $2 i32.const 0 i32.ge_s @@ -2841,17 +2840,16 @@ local.get $1 local.get $4 call $~lib/util/string/compareImpl + i32.eqz if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $loop|0 - else local.get $2 return end - unreachable + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $for-loop|0 end end i32.const -1 @@ -4068,7 +4066,7 @@ br_if $folding-inner0 i32.const 1 local.set $12 - loop $loop|2 + loop $for-loop|2 local.get $0 i32.load16_u local.tee $5 @@ -4087,7 +4085,7 @@ i32.const 2 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $1 @@ -4116,69 +4114,69 @@ i32.const 48 i32.sub local.set $4 - loop $loop|3 - block $break|3 - i32.const 1 - local.get $12 - i32.eqz - i32.const 0 - local.get $5 - i32.const 46 - i32.eq - select - local.get $4 - i32.const 10 - i32.lt_u - select - i32.eqz - br_if $break|3 - local.get $4 - i32.const 10 - i32.lt_u - if - local.get $4 - i64.extend_i32_u - local.get $2 - i64.const 10 - i64.mul - i64.add - local.get $2 + loop $for-loop|3 + i32.const 1 + local.get $12 + i32.eqz + i32.const 0 + local.get $5 + i32.const 46 + i32.eq + select + local.get $4 + i32.const 10 + i32.lt_u + select + if + block $for-break3 local.get $4 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or - local.get $3 - i32.const 19 - i32.lt_s - select - local.set $2 - local.get $3 + i32.const 10 + i32.lt_u + if + local.get $4 + i64.extend_i32_u + local.get $2 + i64.const 10 + i64.mul + i64.add + local.get $2 + local.get $4 + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or + local.get $3 + i32.const 19 + i32.lt_s + select + local.set $2 + local.get $3 + i32.const 1 + i32.add + local.set $3 + else + local.get $3 + local.set $8 + i32.const 1 + local.set $12 + end + local.get $1 i32.const 1 + i32.sub + local.tee $1 + i32.eqz + br_if $for-break3 + local.get $0 + i32.const 2 i32.add - local.set $3 - else - local.get $3 - local.set $8 - i32.const 1 - local.set $12 + local.tee $0 + i32.load16_u + local.tee $5 + i32.const 48 + i32.sub + local.set $4 + br $for-loop|3 end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - br_if $break|3 - local.get $0 - i32.const 2 - i32.add - local.tee $0 - i32.load16_u - local.tee $5 - i32.const 48 - i32.sub - local.set $4 - br $loop|3 end end block $~lib/util/string/scientific|inlined.0 @@ -4281,7 +4279,7 @@ i32.const 48 i32.sub local.set $0 - loop $loop|5 + loop $for-loop|5 local.get $0 i32.const 10 i32.lt_u @@ -4315,7 +4313,7 @@ i32.const 48 i32.sub local.set $0 - br $loop|5 + br $for-loop|5 end end local.get $3 @@ -4430,7 +4428,7 @@ local.get $6 i64.sub local.set $6 - loop $loop|6 + loop $for-loop|6 local.get $3 i32.const -14 i32.le_s @@ -4465,7 +4463,7 @@ i32.const 14 i32.add local.set $3 - br $loop|6 + br $for-loop|6 end end local.get $2 @@ -4515,7 +4513,7 @@ i64.extend_i32_s i64.add global.set $~lib/util/string/__fixmulShift - loop $loop|7 + loop $for-loop|7 local.get $0 i32.const 13 i32.ge_s @@ -4571,7 +4569,7 @@ i32.const 13 i32.sub local.set $0 - br $loop|7 + br $for-loop|7 end end local.get $0 @@ -5200,7 +5198,7 @@ local.set $1 i32.const 0 local.set $6 - loop $loop|0 + loop $for-loop|0 local.get $6 local.get $4 i32.lt_u @@ -5238,7 +5236,7 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -6021,7 +6019,7 @@ local.set $5 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -6051,7 +6049,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $4 @@ -6946,7 +6944,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -6962,7 +6960,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -7034,7 +7032,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -7050,7 +7048,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 @@ -7698,7 +7696,7 @@ i32.const 18044 i32.load local.set $10 - loop $loop|0 + loop $for-loop|0 local.get $6 local.get $7 i32.lt_u @@ -7713,7 +7711,7 @@ i32.const -128 i32.and if - block $continue|0 + block $for-continue|0 local.get $6 local.get $7 i32.const 1 @@ -7774,7 +7772,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $for-continue|0 end end end @@ -7964,7 +7962,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $5 @@ -7997,7 +7995,7 @@ i32.const 1 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $4 local.get $5 i32.lt_u @@ -8012,7 +8010,7 @@ i32.const -128 i32.and if - block $continue|0 + block $for-continue|0 local.get $4 local.get $5 i32.const 1 @@ -8073,7 +8071,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $for-continue|0 end end end @@ -8183,7 +8181,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -15929,7 +15927,7 @@ end i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 1114111 i32.le_s @@ -16135,20 +16133,18 @@ i32.const 2 call $~lib/builtins/abort unreachable - else - local.get $8 - call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $loop|0 end - unreachable + local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release + local.get $2 + call $~lib/rt/pure/__release + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 end end global.get $std/string/str diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 54fe96c249..99c440ff40 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -1406,15 +1406,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -1428,15 +1426,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -1460,17 +1456,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1834,17 +1828,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1907,21 +1899,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1929,19 +1918,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1959,9 +1945,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4272,17 +4257,15 @@ i32.lt_s select local.set $7 - block $break|0 + local.get $5 + local.get $3 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $7 local.get $5 - local.get $3 - i32.sub - local.set $5 - loop $loop|0 - local.get $7 - local.get $5 - i32.le_s - i32.eqz - br_if $break|0 + i32.le_s + if local.get $0 local.get $7 local.get $1 @@ -4302,9 +4285,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $4 @@ -4617,13 +4599,11 @@ i32.lt_s select local.set $7 - block $break|0 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if local.get $0 local.get $7 local.get $1 @@ -4643,9 +4623,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $4 @@ -6436,17 +6415,15 @@ local.get $2 return end - block $break|2 - i32.const 1 - local.set $7 - loop $loop|2 - local.get $3 - i32.load16_u - local.tee $4 - i32.const 48 - i32.eq - i32.eqz - br_if $break|2 + i32.const 1 + local.set $7 + loop $for-loop|2 + local.get $3 + i32.load16_u + local.tee $4 + i32.const 48 + i32.eq + if local.get $1 i32.const 1 i32.sub @@ -6459,9 +6436,8 @@ i32.const 2 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $1 i32.const 0 @@ -6499,12 +6475,12 @@ return end end - block $break|3 - local.get $4 - i32.const 48 - i32.sub - local.set $11 - loop $loop|3 + local.get $4 + i32.const 48 + i32.sub + local.set $11 + block $for-break3 + loop $for-loop|3 local.get $11 i32.const 10 i32.lt_u @@ -6521,62 +6497,61 @@ i32.const 0 end end - i32.eqz - br_if $break|3 - local.get $11 - i32.const 10 - i32.lt_u if - local.get $8 - i32.const 19 - i32.lt_s - if (result i64) - i64.const 10 - local.get $10 - i64.mul - local.get $11 - i64.extend_i32_u - i64.add + local.get $11 + i32.const 10 + i32.lt_u + if + local.get $8 + i32.const 19 + i32.lt_s + if (result i64) + i64.const 10 + local.get $10 + i64.mul + local.get $11 + i64.extend_i32_u + i64.add + else + local.get $10 + local.get $11 + i32.eqz + i32.eqz + i64.extend_i32_u + i64.or + end + local.set $10 + local.get $8 + i32.const 1 + i32.add + local.set $8 else - local.get $10 - local.get $11 - i32.eqz - i32.eqz - i64.extend_i32_u - i64.or + local.get $8 + local.set $9 + i32.const 1 + local.set $7 end - local.set $10 - local.get $8 + local.get $1 i32.const 1 + i32.sub + local.tee $1 + i32.eqz + if + br $for-break3 + end + local.get $3 + i32.const 2 i32.add - local.set $8 - else - local.get $8 - local.set $9 - i32.const 1 - local.set $7 - end - local.get $1 - i32.const 1 - i32.sub - local.tee $1 - i32.eqz - if - br $break|3 + local.tee $3 + i32.load16_u + local.set $4 + local.get $4 + i32.const 48 + i32.sub + local.set $11 + br $for-loop|3 end - local.get $3 - i32.const 2 - i32.add - local.tee $3 - i32.load16_u - local.set $4 - local.get $4 - i32.const 48 - i32.sub - local.set $11 - br $loop|3 end - unreachable end local.get $7 i32.eqz @@ -6693,22 +6668,20 @@ end unreachable end - block $break|5 - local.get $15 - i32.const 48 - i32.sub - local.set $16 - loop $loop|5 - local.get $12 - if (result i32) - local.get $16 - i32.const 10 - i32.lt_u - else - i32.const 0 - end - i32.eqz - br_if $break|5 + local.get $15 + i32.const 48 + i32.sub + local.set $16 + loop $for-loop|5 + local.get $12 + if (result i32) + local.get $16 + i32.const 10 + i32.lt_u + else + i32.const 0 + end + if local.get $14 i32.const 3200 i32.ge_s @@ -6738,9 +6711,8 @@ i32.const 48 i32.sub local.set $16 - br $loop|5 + br $for-loop|5 end - unreachable end local.get $13 local.get $14 @@ -6878,13 +6850,11 @@ local.get $19 i64.sub local.set $19 - block $break|6 - loop $loop|6 - local.get $14 - i32.const -14 - i32.le_s - i32.eqz - br_if $break|6 + loop $for-loop|6 + local.get $14 + i32.const -14 + i32.le_s + if local.get $18 i64.const 6103515625 i64.div_u @@ -6919,9 +6889,8 @@ i32.const 14 i32.add local.set $14 - br $loop|6 + br $for-loop|6 end - unreachable end i32.const 5 i32.const 0 @@ -6987,13 +6956,11 @@ local.set $23 local.get $23 global.set $~lib/util/string/__fixmulShift - block $break|7 - loop $loop|7 - local.get $15 - i32.const 13 - i32.ge_s - i32.eqz - br_if $break|7 + loop $for-loop|7 + local.get $15 + i32.const 13 + i32.ge_s + if local.get $18 local.set $19 i32.const 1220703125 @@ -7057,9 +7024,8 @@ i32.const 13 i32.sub local.set $15 - br $loop|7 + br $for-loop|7 end - unreachable end local.get $18 local.set $19 @@ -7953,15 +7919,13 @@ call $~lib/memory/memory.copy local.get $6 local.set $7 - block $break|0 - i32.const 0 - local.set $8 - loop $loop|0 - local.get $8 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $8 + loop $for-loop|0 + local.get $8 + local.get $3 + i32.lt_u + if local.get $5 local.get $7 local.tee $9 @@ -7997,9 +7961,8 @@ i32.const 1 i32.add local.set $8 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $5 call $~lib/rt/pure/__retain @@ -9007,15 +8970,13 @@ local.get $4 i32.load offset=4 local.set $3 - block $break|0 - i32.const 0 - local.set $7 - loop $loop|0 - local.get $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + loop $for-loop|0 + local.get $7 + local.get $5 + i32.lt_s + if i32.const 2 i32.const 1 call $~lib/rt/tlsf/__alloc @@ -9042,9 +9003,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__retain @@ -10470,15 +10430,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -10490,9 +10448,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -10581,15 +10538,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -10601,9 +10556,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 @@ -11483,16 +11437,14 @@ local.set $4 i32.const 0 local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_u + if + block $for-continue|0 local.get $0 local.get $6 i32.const 1 @@ -11588,7 +11540,7 @@ i32.const 1 i32.add local.set $5 - br $continue|0 + br $for-continue|0 end end end @@ -11782,9 +11734,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $2 local.get $5 @@ -11824,16 +11775,14 @@ local.set $2 i32.const 0 local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_u + if + block $for-continue|0 local.get $0 local.get $4 i32.const 1 @@ -11929,7 +11878,7 @@ i32.const 1 i32.add local.set $3 - br $continue|0 + br $for-continue|0 end end end @@ -12031,9 +11980,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $2 local.get $3 @@ -20131,15 +20079,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $263 - loop $loop|0 - local.get $263 - i32.const 1114111 - i32.le_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $263 + loop $for-loop|0 + local.get $263 + i32.const 1114111 + i32.le_s + if local.get $263 call $~lib/string/String.fromCodePoint local.set $264 @@ -20355,9 +20301,8 @@ i32.const 1 i32.add local.set $263 - br $loop|0 + br $for-loop|0 end - unreachable end global.get $std/string/str call $~lib/rt/pure/__release diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index ba28d130f8..97aba1b743 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -489,19 +489,18 @@ local.get $0 local.tee $2 if - block $break|0 - i32.const 0 - local.set $0 - local.get $2 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $loop|0 - local.get $0 - local.get $3 - i32.ge_u - br_if $break|0 + i32.const 0 + local.set $0 + local.get $2 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $0 + local.get $3 + i32.lt_u + if local.get $1 local.get $0 local.get $2 @@ -515,9 +514,8 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end - unreachable end end local.get $1 diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index d8924d59d3..0006b7c26f 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -647,20 +647,18 @@ i32.const 0 i32.ne if - block $break|0 - i32.const 0 - local.set $2 - local.get $0 - call $~lib/string/String#get:length - i32.const 1 - i32.shl - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/string/String#get:length + i32.const 1 + i32.shl + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $1 local.get $0 local.get $2 @@ -674,9 +672,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end end local.get $1 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index d03a156916..4f8394401f 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -813,7 +813,7 @@ i32.store i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 i32.const 23 i32.lt_u @@ -827,7 +827,7 @@ i32.store offset=4 i32.const 0 local.set $1 - loop $loop|1 + loop $for-loop|1 local.get $1 i32.const 16 i32.lt_u @@ -847,14 +847,14 @@ i32.const 1 i32.add local.set $1 - br $loop|1 + br $for-loop|1 end end local.get $0 i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end i32.const 7744 @@ -1166,7 +1166,7 @@ local.set $3 global.get $~lib/rt/pure/CUR local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $0 i32.lt_u @@ -1225,14 +1225,14 @@ i32.const 4 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $2 global.set $~lib/rt/pure/CUR local.get $5 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $2 i32.lt_u @@ -1244,12 +1244,12 @@ i32.const 4 i32.add local.set $0 - br $loop|1 + br $for-loop|1 end end local.get $5 local.set $0 - loop $loop|2 + loop $for-loop|2 local.get $0 local.get $2 i32.lt_u @@ -1268,7 +1268,7 @@ i32.const 4 i32.add local.set $0 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -3047,7 +3047,7 @@ (local $4 f64) (local $5 f64) (local $6 i32) - loop $loop|0 + loop $for-loop|0 local.get $3 local.get $1 i32.lt_s @@ -3114,7 +3114,7 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end end ) @@ -3143,7 +3143,7 @@ i32.const 1 i32.sub local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $3 i32.const 0 i32.gt_s @@ -3240,14 +3240,14 @@ i32.const 1 i32.sub local.set $3 - br $loop|0 + br $for-loop|0 end end local.get $1 i32.const 1 i32.sub local.set $3 - loop $loop|2 + loop $for-loop|2 local.get $3 i32.const 2 i32.ge_s @@ -3359,7 +3359,7 @@ i32.const 1 i32.sub local.set $3 - br $loop|2 + br $for-loop|2 end end local.get $5 @@ -3723,7 +3723,7 @@ local.get $0 i32.load offset=8 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -3738,14 +3738,12 @@ if i32.const 0 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -3886,7 +3884,7 @@ select end local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -3902,7 +3900,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $4 @@ -3948,7 +3946,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -3963,14 +3961,12 @@ if i32.const 0 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end i32.const 1 @@ -4174,7 +4170,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -4194,7 +4190,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4265,7 +4261,7 @@ local.get $0 i32.load offset=8 local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s @@ -4286,7 +4282,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -4398,7 +4394,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -4420,7 +4416,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4495,7 +4491,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -4517,7 +4513,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4568,7 +4564,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s @@ -4591,7 +4587,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -4728,7 +4724,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $5 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $5 i32.lt_s @@ -4751,7 +4747,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -4888,7 +4884,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -4910,7 +4906,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -4964,7 +4960,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $4 i32.lt_s @@ -4986,7 +4982,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5036,7 +5032,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 0 i32.ge_s @@ -5056,7 +5052,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5108,7 +5104,7 @@ i32.const 1 i32.sub local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $2 i32.const 0 i32.ge_s @@ -5129,7 +5125,7 @@ i32.const 1 i32.sub local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -5218,7 +5214,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 0 i32.ge_s @@ -5240,7 +5236,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5292,7 +5288,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 0 i32.ge_s @@ -5314,7 +5310,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5366,7 +5362,7 @@ i32.const 1 i32.sub local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $2 i32.const 0 i32.ge_s @@ -5389,7 +5385,7 @@ i32.const 1 i32.sub local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -5474,7 +5470,7 @@ i32.const 1 i32.sub local.set $2 - loop $loop|0 + loop $for-loop|0 local.get $2 i32.const 0 i32.ge_s @@ -5497,7 +5493,7 @@ i32.const 1 i32.sub local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -5582,7 +5578,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 0 i32.ge_s @@ -5604,7 +5600,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5654,7 +5650,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $1 i32.const 0 i32.ge_s @@ -5676,7 +5672,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5739,7 +5735,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -5761,7 +5757,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -5861,7 +5857,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -5883,7 +5879,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -6002,7 +5998,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -6024,7 +6020,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -6130,7 +6126,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6157,7 +6153,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6286,7 +6282,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6313,7 +6309,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6442,7 +6438,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6469,7 +6465,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6575,7 +6571,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6602,7 +6598,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6736,7 +6732,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6763,7 +6759,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -6892,7 +6888,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -6919,7 +6915,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7053,7 +7049,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7080,7 +7076,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7214,7 +7210,7 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7241,7 +7237,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7506,7 +7502,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7538,7 +7534,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7680,7 +7676,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7712,7 +7708,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -7847,7 +7843,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -7879,7 +7875,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8025,7 +8021,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8061,7 +8057,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8209,7 +8205,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8245,7 +8241,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8391,7 +8387,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8427,7 +8423,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8573,7 +8569,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8609,7 +8605,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8755,7 +8751,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8791,7 +8787,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -8937,7 +8933,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -8973,7 +8969,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -9119,7 +9115,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9155,7 +9151,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -9301,7 +9297,7 @@ local.get $0 i32.load offset=4 local.set $7 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9337,7 +9333,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -9471,7 +9467,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9493,7 +9489,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -9560,7 +9556,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9582,7 +9578,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -9694,7 +9690,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9718,7 +9714,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -9785,7 +9781,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9809,7 +9805,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -9875,7 +9871,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -9899,7 +9895,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -10013,7 +10009,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10037,7 +10033,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -10151,7 +10147,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10175,7 +10171,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -10246,7 +10242,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10270,7 +10266,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 0 @@ -10336,7 +10332,7 @@ i32.load offset=8 local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10356,7 +10352,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -10429,7 +10425,7 @@ i32.load offset=8 local.set $4 block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10449,7 +10445,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -10562,7 +10558,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10586,7 +10582,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -10657,7 +10653,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10681,7 +10677,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -10745,7 +10741,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10769,7 +10765,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -10885,7 +10881,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -10909,7 +10905,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -11025,7 +11021,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11049,7 +11045,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -11118,7 +11114,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11142,7 +11138,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const -1 @@ -11221,7 +11217,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11244,7 +11240,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -11311,7 +11307,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11334,7 +11330,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -11449,7 +11445,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11474,7 +11470,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -11535,7 +11531,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11560,7 +11556,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -11627,7 +11623,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11652,7 +11648,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -11763,7 +11759,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -11788,7 +11784,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -12052,7 +12048,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -12077,7 +12073,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -12298,7 +12294,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -12323,7 +12319,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end i32.const 1 @@ -12428,7 +12424,7 @@ local.get $0 i32.load offset=8 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -12446,7 +12442,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) @@ -12516,7 +12512,7 @@ local.get $0 i32.load offset=8 local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -12535,7 +12531,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end ) @@ -12696,7 +12692,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -12716,7 +12712,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) @@ -12786,7 +12782,7 @@ local.get $0 call $~lib/typedarray/Int16Array#get:length local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -12806,7 +12802,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) @@ -12911,7 +12907,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -12932,7 +12928,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end ) @@ -13078,7 +13074,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $4 - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -13099,7 +13095,7 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end end ) @@ -13251,7 +13247,7 @@ local.get $0 call $~lib/typedarray/Int32Array#get:length local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -13271,7 +13267,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) @@ -13374,7 +13370,7 @@ local.get $0 call $~lib/typedarray/Int64Array#get:length local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -13394,7 +13390,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end ) @@ -13463,7 +13459,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -13492,7 +13488,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -13514,7 +13510,7 @@ call $~lib/typedarray/Int8Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -13543,7 +13539,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -13551,7 +13547,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -13578,14 +13574,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -13673,7 +13667,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -13702,7 +13696,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -13785,7 +13779,7 @@ call $~lib/typedarray/Uint8Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -13810,7 +13804,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -13818,7 +13812,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -13843,14 +13837,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -13997,7 +13989,7 @@ call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -14022,7 +14014,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -14030,7 +14022,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -14055,14 +14047,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -14149,7 +14139,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -14182,7 +14172,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -14269,7 +14259,7 @@ call $~lib/typedarray/Int16Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -14298,7 +14288,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -14306,7 +14296,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -14333,14 +14323,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -14427,7 +14415,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -14460,7 +14448,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -14547,7 +14535,7 @@ call $~lib/typedarray/Uint16Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -14572,7 +14560,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -14580,7 +14568,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -14605,14 +14593,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -14699,7 +14685,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -14732,7 +14718,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -14754,7 +14740,7 @@ call $~lib/typedarray/Int32Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -14775,7 +14761,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -14783,7 +14769,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -14806,14 +14792,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -14965,7 +14949,7 @@ call $~lib/typedarray/Uint32Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -14986,7 +14970,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -14994,7 +14978,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -15017,14 +15001,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -15111,7 +15093,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -15144,7 +15126,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -15231,7 +15213,7 @@ call $~lib/typedarray/Int64Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -15254,7 +15236,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -15262,7 +15244,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -15286,14 +15268,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -15444,7 +15424,7 @@ call $~lib/typedarray/Uint64Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -15467,7 +15447,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -15475,7 +15455,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -15499,14 +15479,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -15593,7 +15571,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -15626,7 +15604,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -15713,7 +15691,7 @@ call $~lib/typedarray/Float32Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -15736,7 +15714,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -15744,7 +15722,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -15768,14 +15746,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -15862,7 +15838,7 @@ i32.const 1 i32.sub local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_u @@ -15895,7 +15871,7 @@ i32.const 1 i32.sub local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $3 @@ -15917,7 +15893,7 @@ call $~lib/typedarray/Float64Array#constructor local.tee $5 local.set $3 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -15940,7 +15916,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $2 @@ -15948,7 +15924,7 @@ call $~lib/rt/pure/__release i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $1 i32.lt_s @@ -15972,14 +15948,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $3 @@ -16202,7 +16176,7 @@ call $~lib/typedarray/Int8Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -16221,7 +16195,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -16622,7 +16596,7 @@ call $~lib/typedarray/Uint8Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -16639,7 +16613,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -17039,7 +17013,7 @@ call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -17056,7 +17030,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -17600,7 +17574,7 @@ call $~lib/typedarray/Int16Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -17619,7 +17593,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -18019,7 +17993,7 @@ call $~lib/typedarray/Uint16Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -18036,7 +18010,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -18576,7 +18550,7 @@ call $~lib/typedarray/Int32Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -18591,7 +18565,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -18992,7 +18966,7 @@ call $~lib/typedarray/Uint32Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -19007,7 +18981,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -19547,7 +19521,7 @@ call $~lib/typedarray/Int64Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -19563,7 +19537,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -19963,7 +19937,7 @@ call $~lib/typedarray/Uint64Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -19979,7 +19953,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -20519,7 +20493,7 @@ call $~lib/typedarray/Float32Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -20535,7 +20509,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -21075,7 +21049,7 @@ call $~lib/typedarray/Float64Array#constructor local.tee $3 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $2 i32.lt_s @@ -21091,7 +21065,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -21882,7 +21856,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -21918,7 +21892,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -22221,7 +22195,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -22257,7 +22231,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -22510,7 +22484,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -22548,7 +22522,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -22716,7 +22690,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -22754,7 +22728,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -22934,7 +22908,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -22972,7 +22946,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -23134,7 +23108,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -23172,7 +23146,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -23515,7 +23489,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -23553,7 +23527,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -23774,7 +23748,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -23812,7 +23786,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -24349,7 +24323,7 @@ i32.const 0 end if (result i32) - loop $loop|0 + loop $for-loop|0 local.get $1 local.get $3 i32.lt_s @@ -24365,7 +24339,7 @@ i32.const 1 i32.add local.set $1 - br $loop|0 + br $for-loop|0 end end local.get $0 @@ -24437,7 +24411,7 @@ i32.store i32.const 2 local.set $2 - loop $loop|1 + loop $for-loop|1 local.get $2 local.get $3 i32.lt_s @@ -24453,7 +24427,7 @@ i32.const 1 i32.add local.set $2 - br $loop|1 + br $for-loop|1 end end local.get $1 @@ -25033,7 +25007,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -25072,7 +25046,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -25211,7 +25185,7 @@ local.set $2 i32.const 0 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $5 local.get $3 i32.lt_s @@ -25249,7 +25223,7 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end end local.get $6 @@ -25491,7 +25465,7 @@ call $~lib/typedarray/Int8Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -25510,7 +25484,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -25530,7 +25504,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -25556,14 +25530,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -25645,7 +25617,7 @@ call $~lib/typedarray/Uint8Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -25662,7 +25634,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -25682,7 +25654,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -25708,14 +25680,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -25797,7 +25767,7 @@ call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -25814,7 +25784,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -25834,7 +25804,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -25860,14 +25830,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -25949,7 +25917,7 @@ call $~lib/typedarray/Int16Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -25968,7 +25936,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -25988,7 +25956,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26014,14 +25982,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26103,7 +26069,7 @@ call $~lib/typedarray/Uint16Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26120,7 +26086,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26140,7 +26106,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26166,14 +26132,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26255,7 +26219,7 @@ call $~lib/typedarray/Int32Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26270,7 +26234,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26290,7 +26254,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26316,14 +26280,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26405,7 +26367,7 @@ call $~lib/typedarray/Uint32Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26420,7 +26382,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26440,7 +26402,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26466,14 +26428,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26555,7 +26515,7 @@ call $~lib/typedarray/Int64Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26571,7 +26531,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26591,7 +26551,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26617,14 +26577,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26706,7 +26664,7 @@ call $~lib/typedarray/Uint64Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26722,7 +26680,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26742,7 +26700,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26768,14 +26726,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -26857,7 +26813,7 @@ call $~lib/typedarray/Float32Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -26873,7 +26829,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -26893,7 +26849,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -26917,14 +26873,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -27006,7 +26960,7 @@ call $~lib/typedarray/Float64Array#constructor local.tee $4 local.set $1 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -27022,7 +26976,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end local.get $1 @@ -27042,7 +26996,7 @@ local.set $2 i32.const 0 local.set $0 - loop $loop|1 + loop $for-loop|1 local.get $0 local.get $3 i32.lt_s @@ -27066,14 +27020,12 @@ i32.const 4 call $~lib/builtins/abort unreachable - else - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $loop|1 end - unreachable + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $for-loop|1 end end local.get $4 @@ -27111,7 +27063,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -27130,7 +27082,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27153,7 +27105,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -27185,14 +27137,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -27229,7 +27179,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -27259,7 +27209,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27294,7 +27244,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -27313,7 +27263,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27350,7 +27300,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -27380,7 +27330,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27437,7 +27387,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -27456,7 +27406,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27650,7 +27600,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -27682,14 +27632,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -27726,7 +27674,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -27756,7 +27704,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27793,7 +27741,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -27823,7 +27771,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -27994,7 +27942,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28026,7 +27974,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28049,7 +27997,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -28081,14 +28029,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -28125,7 +28071,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28159,7 +28105,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28205,7 +28151,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -28241,7 +28187,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28278,7 +28224,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28312,7 +28258,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28358,7 +28304,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28390,7 +28336,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28427,7 +28373,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28457,7 +28403,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28629,7 +28575,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -28650,7 +28596,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28673,7 +28619,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -28705,14 +28651,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -28749,7 +28693,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28781,7 +28725,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28816,7 +28760,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -28837,7 +28781,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28874,7 +28818,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -28906,7 +28850,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -28937,7 +28881,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -28956,7 +28900,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29018,7 +28962,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -29037,7 +28981,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29199,7 +29143,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -29238,14 +29182,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -29282,7 +29224,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -29314,7 +29256,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29351,7 +29293,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -29383,7 +29325,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29583,7 +29525,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -29615,14 +29557,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -29660,7 +29600,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -29691,7 +29631,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29726,7 +29666,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -29747,7 +29687,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29784,7 +29724,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -29816,7 +29756,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29847,7 +29787,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -29866,7 +29806,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29901,7 +29841,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -29922,7 +29862,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -29958,7 +29898,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -29977,7 +29917,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30140,7 +30080,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -30172,14 +30112,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -30217,7 +30155,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -30248,7 +30186,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30285,7 +30223,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -30317,7 +30255,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30489,7 +30427,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -30510,7 +30448,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30533,7 +30471,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -30565,14 +30503,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -30609,7 +30545,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -30641,7 +30577,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30705,7 +30641,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -30736,7 +30672,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30767,7 +30703,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -30786,7 +30722,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30821,7 +30757,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -30842,7 +30778,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -30878,7 +30814,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -30897,7 +30833,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31058,7 +30994,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $3 i32.lt_s @@ -31090,14 +31026,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -31134,7 +31068,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -31166,7 +31100,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31204,7 +31138,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -31235,7 +31169,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31406,7 +31340,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -31427,7 +31361,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31451,7 +31385,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -31490,14 +31424,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -31532,7 +31464,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -31554,7 +31486,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31585,7 +31517,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -31605,7 +31537,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31640,7 +31572,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -31662,7 +31594,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31698,7 +31630,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -31718,7 +31650,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31877,7 +31809,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -31899,7 +31831,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -31923,7 +31855,7 @@ call $~lib/builtins/abort unreachable end - loop $loop|0 + loop $for-loop|0 local.get $2 local.get $4 i32.lt_s @@ -31960,14 +31892,12 @@ i32.const 6 call $~lib/builtins/abort unreachable - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $loop|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|0 end end ) @@ -32003,7 +31933,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -32025,7 +31955,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32061,7 +31991,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -32082,7 +32012,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32113,7 +32043,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -32133,7 +32063,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32168,7 +32098,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -32190,7 +32120,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32226,7 +32156,7 @@ local.set $3 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $3 i32.lt_s @@ -32246,7 +32176,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32407,7 +32337,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -32441,7 +32371,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32477,7 +32407,7 @@ local.set $4 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $4 i32.lt_s @@ -32509,7 +32439,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) @@ -32541,7 +32471,7 @@ local.set $1 i32.const 0 local.set $0 - loop $loop|0 + loop $for-loop|0 local.get $0 local.get $1 i32.lt_s @@ -32566,7 +32496,7 @@ i32.const 1 i32.add local.set $0 - br $loop|0 + br $for-loop|0 end end ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index ecb313497e..42f472af57 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -1004,15 +1004,13 @@ local.get $5 local.get $4 i32.store offset=1568 - block $break|0 - i32.const 0 - local.set $5 - loop $loop|0 - local.get $5 - i32.const 23 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + if local.get $0 local.set $7 local.get $5 @@ -1026,15 +1024,13 @@ i32.add local.get $4 i32.store offset=4 - block $break|1 - i32.const 0 - local.set $7 - loop $loop|1 - local.get $7 - i32.const 16 - i32.lt_u - i32.eqz - br_if $break|1 + i32.const 0 + local.set $7 + loop $for-loop|1 + local.get $7 + i32.const 16 + i32.lt_u + if local.get $0 local.set $9 local.get $5 @@ -1058,17 +1054,15 @@ i32.const 1 i32.add local.set $7 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $1 @@ -1461,17 +1455,15 @@ local.set $0 local.get $0 local.set $1 - block $break|0 - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + if local.get $2 i32.load local.set $4 @@ -1534,21 +1526,18 @@ i32.const 4 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $3 - loop $loop|1 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load call $~lib/rt/pure/scan @@ -1556,19 +1545,16 @@ i32.const 4 i32.add local.set $3 - br $loop|1 + br $for-loop|1 end - unreachable end - block $break|2 - local.get $0 - local.set $3 - loop $loop|2 - local.get $3 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + if local.get $3 i32.load local.set $2 @@ -1586,9 +1572,8 @@ i32.const 4 i32.add local.set $3 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $0 global.set $~lib/rt/pure/CUR @@ -4848,15 +4833,13 @@ (local $5 i32) (local $6 f64) (local $7 i32) - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $1 + i32.lt_s + if local.get $0 local.get $3 i32.const 3 @@ -4925,9 +4908,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end ) (func $~lib/util/sort/weakHeapSort (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i32) @@ -4955,17 +4937,15 @@ i32.const 0 local.get $3 call $~lib/memory/memory.fill - block $break|0 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|0 - local.get $5 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 0 + i32.gt_s + if local.get $5 local.set $6 block $break|1 @@ -5068,21 +5048,18 @@ i32.const 1 i32.sub local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end - block $break|2 - local.get $1 - i32.const 1 - i32.sub - local.set $5 - loop $loop|2 - local.get $5 - i32.const 2 - i32.ge_s - i32.eqz - br_if $break|2 + local.get $1 + i32.const 1 + i32.sub + local.set $5 + loop $for-loop|2 + local.get $5 + i32.const 2 + i32.ge_s + if local.get $0 f64.load local.set $9 @@ -5205,9 +5182,8 @@ i32.const 1 i32.sub local.set $5 - br $loop|2 + br $for-loop|2 end - unreachable end local.get $4 call $~lib/rt/tlsf/__free @@ -5661,18 +5637,16 @@ local.get $2 return end - block $break|0 - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int8Array#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int8Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $0 local.get $2 call $~lib/typedarray/Int8Array#__get @@ -5694,9 +5668,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -5887,13 +5860,11 @@ select end local.set $4 - block $break|0 - loop $loop|0 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + loop $for-loop|0 + local.get $5 + local.get $4 + i32.lt_s + if local.get $8 local.get $5 i32.const 2 @@ -5905,9 +5876,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 ) @@ -5969,18 +5939,16 @@ local.get $2 return end - block $break|0 - i32.const 0 - local.set $2 - local.get $0 - call $~lib/typedarray/Int32Array#get:length - local.set $3 - loop $loop|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $2 + local.get $0 + call $~lib/typedarray/Int32Array#get:length + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_s + if local.get $0 local.get $2 call $~lib/typedarray/Int32Array#__get @@ -6002,9 +5970,8 @@ i32.const 1 i32.add local.set $2 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $3 @@ -6289,18 +6256,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6319,9 +6284,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -6427,18 +6391,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6457,9 +6419,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -6543,18 +6504,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6573,9 +6532,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -6683,18 +6641,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6713,9 +6669,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -6825,18 +6780,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6855,9 +6808,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -6941,18 +6893,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -6971,9 +6921,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -7079,18 +7028,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7109,9 +7056,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -7218,18 +7164,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Int64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7248,9 +7192,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $9 @@ -7357,18 +7300,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Uint64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7387,9 +7328,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $9 @@ -7496,18 +7436,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Float32Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7526,9 +7464,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $9 @@ -7611,18 +7548,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - i32.const 0 - local.set $7 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - local.set $8 - loop $loop|0 - local.get $7 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $7 + local.get $5 + call $~lib/typedarray/Float64Array#get:length + local.set $8 + loop $for-loop|0 + local.get $7 + local.get $8 + i32.lt_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7641,9 +7576,8 @@ i32.const 1 i32.add local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $9 @@ -7724,18 +7658,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7754,9 +7686,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -7841,18 +7772,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7871,9 +7800,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -7956,18 +7884,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -7986,9 +7912,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -8071,18 +7996,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8101,9 +8024,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -8188,18 +8110,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8218,9 +8138,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -8303,18 +8222,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8333,9 +8250,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -8416,18 +8332,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8446,9 +8360,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $7 @@ -8530,18 +8443,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8560,9 +8471,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -8644,18 +8554,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8674,9 +8582,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -8758,18 +8665,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8788,9 +8693,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -8872,18 +8776,16 @@ local.get $5 i32.load offset=4 local.set $6 - block $break|0 - local.get $5 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $7 - loop $loop|0 - local.get $7 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + local.get $5 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $7 + loop $for-loop|0 + local.get $7 + i32.const 0 + i32.ge_s + if i32.const 4 global.set $~lib/argc local.get $3 @@ -8902,9 +8804,8 @@ i32.const 1 i32.sub local.set $7 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 local.set $8 @@ -9001,15 +8902,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 0 @@ -9032,9 +8931,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -9173,15 +9071,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 0 @@ -9204,9 +9100,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -9364,15 +9259,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 0 @@ -9395,9 +9288,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -9536,15 +9428,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 1 @@ -9567,9 +9457,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -9731,15 +9620,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 1 @@ -9762,9 +9649,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -9926,15 +9812,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 2 @@ -9957,9 +9841,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -10098,15 +9981,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 2 @@ -10129,9 +10010,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -10293,15 +10173,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 3 @@ -10324,9 +10202,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -10488,15 +10365,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 3 @@ -10519,9 +10394,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -10683,15 +10557,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 2 @@ -10714,9 +10586,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -10878,15 +10749,13 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $8 local.get $9 i32.const 3 @@ -10909,9 +10778,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $7 local.get $8 @@ -11229,15 +11097,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 0 @@ -11270,9 +11136,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 0 @@ -11457,15 +11322,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 0 @@ -11498,9 +11361,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 0 @@ -11685,15 +11547,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 0 @@ -11726,9 +11586,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 0 @@ -11915,15 +11774,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 1 @@ -11956,9 +11813,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 1 @@ -12143,15 +11999,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 1 @@ -12184,9 +12038,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 1 @@ -12369,15 +12222,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -12410,9 +12261,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 2 @@ -12595,15 +12445,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -12636,9 +12484,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 2 @@ -12822,15 +12669,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -12863,9 +12708,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 3 @@ -13049,15 +12893,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -13090,9 +12932,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 3 @@ -13276,15 +13117,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -13317,9 +13156,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 2 @@ -13503,15 +13341,13 @@ local.set $7 i32.const 0 local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $4 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -13544,9 +13380,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $8 i32.const 3 @@ -13715,18 +13550,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -13751,9 +13584,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -13869,18 +13701,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -13905,9 +13735,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14021,18 +13850,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14057,9 +13884,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14175,18 +14001,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14211,9 +14035,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14329,18 +14152,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14365,9 +14186,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14479,18 +14299,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14515,9 +14333,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14627,18 +14444,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14663,9 +14478,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14775,18 +14589,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14811,9 +14623,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -14923,18 +14734,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -14959,9 +14768,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -15071,18 +14879,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15107,9 +14913,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -15219,18 +15024,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15255,9 +15058,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 0 local.set $6 @@ -15371,18 +15173,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15407,9 +15207,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -15526,18 +15325,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15562,9 +15359,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -15679,18 +15475,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15715,9 +15509,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -15834,18 +15627,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -15870,9 +15661,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -15989,18 +15779,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16025,9 +15813,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16140,18 +15927,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16176,9 +15961,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16289,18 +16073,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16325,9 +16107,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16438,18 +16219,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16474,9 +16253,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16587,18 +16365,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16623,9 +16399,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16736,18 +16511,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16772,9 +16545,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -16885,18 +16657,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -16921,9 +16691,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const -1 local.set $6 @@ -17040,19 +16809,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17066,7 +16833,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17079,9 +16846,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17199,19 +16965,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17225,7 +16989,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17238,9 +17002,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17356,19 +17119,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17382,7 +17143,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17395,9 +17156,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17515,19 +17275,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17541,7 +17299,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17554,9 +17312,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17674,19 +17431,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17700,7 +17455,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17713,9 +17468,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17829,19 +17583,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -17855,7 +17607,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -17868,9 +17620,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -17982,19 +17733,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -18008,7 +17757,7 @@ local.get $2 call_indirect (type $i32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -18021,9 +17770,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -18135,19 +17883,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -18161,7 +17907,7 @@ local.get $2 call_indirect (type $i64_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -18174,9 +17920,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -18288,19 +18033,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -18314,7 +18057,7 @@ local.get $2 call_indirect (type $i64_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -18327,9 +18070,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -18689,19 +18431,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -18715,7 +18455,7 @@ local.get $2 call_indirect (type $f32_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -18728,9 +18468,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -19096,19 +18835,17 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 - block $continue|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if + block $for-continue|0 i32.const 3 global.set $~lib/argc local.get $4 @@ -19122,7 +18859,7 @@ local.get $2 call_indirect (type $f64_i32_i32_=>_i32) if - br $continue|0 + br $for-continue|0 end i32.const 0 local.set $7 @@ -19135,9 +18872,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end i32.const 1 local.set $6 @@ -19292,18 +19028,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -19320,9 +19054,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -19460,18 +19193,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -19488,9 +19219,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -19622,18 +19352,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint8ClampedArray#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint8ClampedArray#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -19650,9 +19378,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -19788,18 +19515,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -19816,9 +19541,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -19956,18 +19680,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint16Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint16Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -19984,9 +19706,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20114,18 +19835,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20142,9 +19861,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20266,18 +19984,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20294,9 +20010,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20419,18 +20134,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Int64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Int64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20447,9 +20160,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20575,18 +20287,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Uint64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Uint64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20603,9 +20313,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20731,18 +20440,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float32Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float32Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20759,9 +20466,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20887,18 +20593,16 @@ local.get $3 i32.load offset=4 local.set $4 - block $break|0 - i32.const 0 - local.set $5 - local.get $3 - call $~lib/typedarray/Float64Array#get:length - local.set $6 - loop $loop|0 - local.get $5 - local.get $6 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $5 + local.get $3 + call $~lib/typedarray/Float64Array#get:length + local.set $6 + loop $for-loop|0 + local.get $5 + local.get $6 + i32.lt_s + if i32.const 3 global.set $~lib/argc local.get $4 @@ -20915,9 +20619,8 @@ i32.const 1 i32.add local.set $5 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/rt/pure/__release @@ -20990,20 +20693,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int8Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int8Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 0 @@ -21034,9 +20735,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -21067,15 +20767,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -21100,22 +20798,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Int8Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Int8Array#__get @@ -21144,9 +20839,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -21240,20 +20934,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 0 @@ -21284,9 +20976,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -21424,15 +21115,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -21453,22 +21142,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Uint8Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Uint8Array#__get @@ -21495,9 +21181,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -21591,20 +21276,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint8ClampedArray#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint8ClampedArray#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 0 @@ -21635,9 +21318,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -21775,15 +21457,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -21804,22 +21484,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Uint8ClampedArray#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Uint8ClampedArray#__get @@ -21846,9 +21523,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -21942,20 +21618,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int16Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 1 @@ -21986,9 +21660,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -22126,15 +21799,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -22159,22 +21830,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Int16Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Int16Array#__get @@ -22203,9 +21871,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -22299,20 +21966,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint16Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint16Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 1 @@ -22343,9 +22008,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -22483,15 +22147,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -22512,22 +22174,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Uint16Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Uint16Array#__get @@ -22554,9 +22213,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -22650,20 +22308,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 2 @@ -22694,9 +22350,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -22727,15 +22382,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -22752,22 +22405,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Int32Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Int32Array#__get @@ -22792,9 +22442,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -22888,20 +22537,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 2 @@ -22932,9 +22579,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -23072,15 +22718,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -23097,22 +22741,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Uint32Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Uint32Array#__get @@ -23137,9 +22778,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -23233,20 +22873,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Int64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Int64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 3 @@ -23277,9 +22915,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -23417,15 +23054,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -23444,22 +23079,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Int64Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Int64Array#__get @@ -23485,9 +23117,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -23581,20 +23212,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Uint64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Uint64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 3 @@ -23625,9 +23254,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -23765,15 +23393,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -23792,22 +23418,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Uint64Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Uint64Array#__get @@ -23833,9 +23456,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -23929,20 +23551,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float32Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float32Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 2 @@ -23973,9 +23593,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -24113,15 +23732,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -24140,22 +23757,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Float32Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Float32Array#__get @@ -24181,9 +23795,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -24277,20 +23890,18 @@ local.get $1 i32.load offset=4 local.set $2 - block $break|0 - i32.const 0 - local.set $3 - local.get $1 - call $~lib/typedarray/Float64Array#get:length - i32.const 1 - i32.sub - local.set $4 - loop $loop|0 - local.get $3 - local.get $4 - i32.lt_u - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + local.get $1 + call $~lib/typedarray/Float64Array#get:length + i32.const 1 + i32.sub + local.set $4 + loop $for-loop|0 + local.get $3 + local.get $4 + i32.lt_u + if local.get $2 local.get $3 i32.const 3 @@ -24321,9 +23932,8 @@ i32.const 1 i32.sub local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $1 ) @@ -24354,15 +23964,13 @@ local.tee $4 call $~lib/rt/pure/__retain local.set $5 - block $break|0 - i32.const 0 - local.set $6 - loop $loop|0 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $6 + loop $for-loop|0 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 local.get $0 @@ -24381,22 +23989,19 @@ i32.const 1 i32.add local.set $6 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 call $~lib/typedarray/Float64Array#reverse call $~lib/rt/pure/__release - block $break|1 - i32.const 0 - local.set $6 - loop $loop|1 - local.get $6 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $6 + loop $for-loop|1 + local.get $6 + local.get $1 + i32.lt_s + if local.get $3 local.get $6 call $~lib/typedarray/Float64Array#__get @@ -24422,9 +24027,8 @@ i32.const 1 i32.add local.set $6 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $5 i32.const 4 @@ -24739,15 +24343,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -24762,9 +24364,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -25424,15 +25025,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -25445,9 +25044,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -26107,15 +25705,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -26128,9 +25724,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -26794,15 +26389,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -26817,9 +26410,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -27479,15 +27071,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -27500,9 +27090,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -28158,15 +27747,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -28177,9 +27764,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -28835,15 +28421,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -28854,9 +28438,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.const 0 @@ -29512,15 +29095,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -29532,9 +29113,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i64.const 0 @@ -30190,15 +29770,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -30210,9 +29788,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i64.const 0 @@ -30868,15 +30445,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -30888,9 +30463,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 f32.const 0 @@ -31546,15 +31120,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -31566,9 +31138,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 f64.const 0 @@ -32738,15 +32309,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 0 @@ -32782,9 +32351,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -33249,15 +32817,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 0 @@ -33293,9 +32859,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -33655,15 +33220,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -33699,9 +33262,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -33939,15 +33501,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -33983,9 +33543,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -34235,15 +33794,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -34279,9 +33836,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -34511,15 +34067,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -34555,9 +34109,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -35123,15 +34676,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -35167,9 +34718,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -35491,15 +35041,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -35535,9 +35083,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -36229,15 +35776,13 @@ i32.const 0 end if - block $break|0 - local.get $1 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + local.get $1 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 1 @@ -36249,9 +35794,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -36340,15 +35884,13 @@ i32.shl i32.or i32.store - block $break|1 - i32.const 2 - local.set $5 - loop $loop|1 - local.get $5 - local.get $4 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 2 + local.set $5 + loop $for-loop|1 + local.get $5 + local.get $4 + i32.lt_s + if local.get $0 local.get $5 i32.const 1 @@ -36360,9 +35902,8 @@ i32.const 1 i32.add local.set $5 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $1 local.get $4 @@ -37122,15 +36663,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 2 @@ -37167,9 +36706,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -37358,15 +36896,13 @@ local.set $8 i32.const 0 local.set $9 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $3 + i32.lt_s + if local.get $0 local.get $4 i32.const 3 @@ -37402,9 +36938,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 local.get $3 @@ -37784,15 +37319,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -37807,9 +37340,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -37836,15 +37368,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Int8Array#__get @@ -37871,9 +37401,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -38049,15 +37578,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -38070,9 +37597,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -38099,15 +37625,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Uint8Array#__get @@ -38134,9 +37658,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -38312,15 +37835,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -38333,9 +37854,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -38362,15 +37882,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Uint8ClampedArray#__get @@ -38397,9 +37915,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -38575,15 +38092,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -38598,9 +38113,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -38627,15 +38141,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Int16Array#__get @@ -38662,9 +38174,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -38840,15 +38351,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -38861,9 +38370,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -38890,15 +38398,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Uint16Array#__get @@ -38925,9 +38431,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -39103,15 +38608,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -39122,9 +38625,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -39151,15 +38653,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Int32Array#__get @@ -39186,9 +38686,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -39364,15 +38863,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -39383,9 +38880,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -39412,15 +38908,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Uint32Array#__get @@ -39447,9 +38941,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -39625,15 +39118,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -39645,9 +39136,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -39674,15 +39164,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Int64Array#__get @@ -39709,9 +39197,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -39887,15 +39374,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -39907,9 +39392,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -39936,15 +39420,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Uint64Array#__get @@ -39971,9 +39453,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -40149,15 +39630,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -40169,9 +39648,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -40198,15 +39676,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Float32Array#__get @@ -40233,9 +39709,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -40411,15 +39886,13 @@ local.tee $2 call $~lib/rt/pure/__retain local.set $3 - block $break|0 - i32.const 0 - local.set $4 - loop $loop|0 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $4 + loop $for-loop|0 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 local.get $0 @@ -40431,9 +39904,8 @@ i32.const 1 i32.add local.set $4 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $3 i32.load @@ -40460,15 +39932,13 @@ call $~lib/rt/pure/__release local.get $4 local.set $6 - block $break|1 - i32.const 0 - local.set $4 - loop $loop|1 - local.get $4 - local.get $1 - i32.lt_s - i32.eqz - br_if $break|1 + i32.const 0 + local.set $4 + loop $for-loop|1 + local.get $4 + local.get $1 + i32.lt_s + if local.get $3 local.get $4 call $~lib/typedarray/Float64Array#__get @@ -40495,9 +39965,8 @@ i32.const 1 i32.add local.set $4 - br $loop|1 + br $for-loop|1 end - unreachable end local.get $2 call $~lib/rt/pure/__release @@ -40576,15 +40045,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -40601,9 +40068,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -40639,15 +40105,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Int8Array#__get @@ -40686,9 +40150,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -40766,15 +40229,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -40803,9 +40264,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -40880,15 +40340,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -40905,9 +40363,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -40987,15 +40444,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -41024,9 +40479,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -41168,15 +40622,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -41193,9 +40645,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -41500,15 +40951,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -41525,9 +40974,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -41576,15 +41024,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Uint8Array#__get @@ -41623,9 +41069,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -41699,15 +41144,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -41736,9 +41179,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -41813,15 +41255,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -41838,9 +41278,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -41916,15 +41355,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -41953,9 +41390,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -42097,15 +41533,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 0 @@ -42122,9 +41556,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -42430,15 +41863,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -42469,9 +41900,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -42507,15 +41937,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Uint8ClampedArray#__get @@ -42554,9 +41982,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -42630,15 +42057,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -42671,9 +42096,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -42749,15 +42173,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -42792,9 +42214,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -42870,15 +42291,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -42911,9 +42330,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43056,15 +42474,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 1 @@ -43095,9 +42511,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43173,15 +42588,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 0 @@ -43212,9 +42625,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43452,15 +42864,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -43477,9 +42887,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43519,15 +42928,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Int16Array#__get @@ -43566,9 +42973,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -43642,15 +43048,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -43679,9 +43083,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43756,15 +43159,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -43781,9 +43182,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43859,15 +43259,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -43896,9 +43294,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -43973,15 +43370,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -43998,9 +43393,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44142,15 +43536,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -44167,9 +43559,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44407,15 +43798,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -44432,9 +43821,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44483,15 +43871,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Uint16Array#__get @@ -44530,9 +43916,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -44606,15 +43991,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -44643,9 +44026,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44720,15 +44102,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -44745,9 +44125,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44823,15 +44202,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -44860,9 +44237,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -44937,15 +44313,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -44962,9 +44336,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45106,15 +44479,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 1 @@ -45131,9 +44502,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45399,15 +44769,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Int32Array#__get @@ -45446,9 +44814,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -45522,15 +44889,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -45559,9 +44924,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45636,15 +45000,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -45661,9 +45023,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45739,15 +45100,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -45776,9 +45135,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45853,15 +45211,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -45878,9 +45234,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -45955,15 +45310,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -45980,9 +45333,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46057,15 +45409,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -46082,9 +45432,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46363,15 +45712,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Uint32Array#__get @@ -46410,9 +45757,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -46486,15 +45832,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -46523,9 +45867,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46600,15 +45943,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -46625,9 +45966,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46703,15 +46043,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -46740,9 +46078,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46817,15 +46154,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -46842,9 +46177,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -46919,15 +46253,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -46944,9 +46276,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47021,15 +46352,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -47046,9 +46375,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47286,15 +46614,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -47311,9 +46637,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47362,15 +46687,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Int64Array#__get @@ -47409,9 +46732,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -47485,15 +46807,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -47522,9 +46842,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47667,15 +46986,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -47704,9 +47021,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47781,15 +47097,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -47806,9 +47120,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47883,15 +47196,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -47908,9 +47219,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -47985,15 +47295,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -48010,9 +47318,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48250,15 +47557,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -48275,9 +47580,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48317,15 +47621,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Uint64Array#__get @@ -48364,9 +47666,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -48440,15 +47741,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -48477,9 +47776,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48622,15 +47920,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 3 @@ -48659,9 +47955,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48736,15 +48031,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -48761,9 +48054,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48838,15 +48130,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -48863,9 +48153,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -48940,15 +48229,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -48965,9 +48252,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -49205,15 +48491,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -49231,9 +48515,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -49278,15 +48561,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Float32Array#__get @@ -49325,9 +48606,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -49467,15 +48747,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -49493,9 +48771,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -49570,15 +48847,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -49596,9 +48871,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -49673,15 +48947,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -49699,9 +48971,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -49776,15 +49047,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 2 @@ -49802,9 +49071,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50027,15 +49295,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50053,9 +49319,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50100,15 +49365,13 @@ call $~lib/builtins/abort unreachable end - block $break|0 - i32.const 0 - local.set $3 - loop $loop|0 - local.get $3 - local.get $2 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $3 + loop $for-loop|0 + local.get $3 + local.get $2 + i32.lt_s + if local.get $0 local.get $3 call $~lib/typedarray/Float64Array#__get @@ -50145,9 +49408,8 @@ i32.const 1 i32.add local.set $3 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -50220,15 +49482,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50246,9 +49506,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50323,15 +49582,13 @@ local.get $4 call $~lib/typedarray/Int64Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50349,9 +49606,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50426,15 +49682,13 @@ local.get $4 call $~lib/typedarray/Uint8Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50452,9 +49706,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50529,15 +49782,13 @@ local.get $4 call $~lib/typedarray/Int16Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50555,9 +49806,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50632,15 +49882,13 @@ local.get $4 call $~lib/array/Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $6 local.get $9 i32.const 3 @@ -50658,9 +49906,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -50884,15 +50131,13 @@ local.get $4 call $~lib/typedarray/Float32Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -50925,9 +50170,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -51003,15 +50247,13 @@ local.get $4 call $~lib/typedarray/Int32Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -51042,9 +50284,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release @@ -51122,15 +50363,13 @@ local.get $4 call $~lib/typedarray/Uint32Array#get:length local.set $8 - block $break|0 - i32.const 0 - local.set $9 - loop $loop|0 - local.get $9 - local.get $8 - i32.lt_s - i32.eqz - br_if $break|0 + i32.const 0 + local.set $9 + loop $for-loop|0 + local.get $9 + local.get $8 + i32.lt_s + if local.get $7 local.get $9 i32.const 2 @@ -51156,9 +50395,8 @@ i32.const 1 i32.add local.set $9 - br $loop|0 + br $for-loop|0 end - unreachable end local.get $4 call $~lib/rt/pure/__release From 0c92db320cb3e51b9f13b11665c43b234a789bfe Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 4 Jan 2020 06:42:50 +0100 Subject: [PATCH 02/19] indent? --- src/compiler.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/compiler.ts b/src/compiler.ts index 893b697eb2..8e9e507fbe 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3,7 +3,7 @@ * @module compiler *//***/ - import { +import { BuiltinSymbols, compileCall as compileBuiltinCall, compileAbort, From 1e4556e39c226d872dc11898c4979e656c5b6e2d Mon Sep 17 00:00:00 2001 From: dcode Date: Sun, 5 Jan 2020 01:08:12 +0100 Subject: [PATCH 03/19] recompile? --- src/compiler.ts | 110 ++++-- src/diagnostics.ts | 15 + src/flow.ts | 25 ++ tests/compiler/std/map.optimized.wat | 80 ++-- tests/compiler/std/map.untouched.wat | 80 ++-- tests/compiler/std/set.optimized.wat | 80 ++-- tests/compiler/std/set.untouched.wat | 80 ++-- tests/compiler/std/typedarray.optimized.wat | 381 ++++++++------------ tests/compiler/std/typedarray.ts | 7 +- tests/compiler/std/typedarray.untouched.wat | 154 ++------ 10 files changed, 465 insertions(+), 547 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 8e9e507fbe..a6e9371797 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1998,7 +1998,17 @@ export class Compiler extends DiagnosticEmitter { } compileForStatement( + /** Statement to compile. */ statement: ForStatement + ): ExpressionRef { + return this.doCompileForStatement(statement, null); + } + + private doCompileForStatement( + /** Statement to compile. */ + statement: ForStatement, + /** If recompiling, the loop flow with differing local flags that triggered it. */ + overrideLoopFlow: Flow | null ): ExpressionRef { var module = this.module; var outerFlow = this.currentFlow; @@ -2028,6 +2038,8 @@ export class Compiler extends DiagnosticEmitter { } var loopFlow = flow.fork(); + if (overrideLoopFlow) loopFlow.unifyLocalFlags(overrideLoopFlow); + var loopFlowBefore = loopFlow.fork(); var condExpr: ExpressionRef; var condTrue = false; { @@ -2060,25 +2072,6 @@ export class Compiler extends DiagnosticEmitter { } } - var incrStmts = new Array(); - { - let incrementor = statement.incrementor; - if (incrementor) { - let incrFlow = loopFlow.fork(); - this.currentFlow = incrFlow; - incrStmts.push( - this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP) - ); - this.performAutoreleases(incrFlow, incrStmts); - incrFlow.freeScopedLocals(); - // The incrementor has no CFG side-effects, but can modify local state. - // Hence: unify flags before and after the incrementor runs - // TODO: Can also throw, but that's not implemented yet. - loopFlow.unifyLocalFlags(incrFlow); - this.currentFlow = loopFlow; - } - } - var contFlow = loopFlow.fork(); this.currentFlow = contFlow; var breakLabel = "for-break" + label; @@ -2100,17 +2093,39 @@ export class Compiler extends DiagnosticEmitter { } else { this.performAutoreleases(contFlow, contStmts); } - // TODO: For a proper CFG we'd have to take into account that the loop - // body affects itself when executing at least twice. One way to do this - // would be to unroll the first iteration if we detect that local states - // differ before and after the loop executed for the first time, or we - // can move this logic to a checker. The latter is preferrable because - // since it can determine such a condition prior we can compile once with - // the least common denominator of flags (i.e. null and wrap states). - } - contFlow.freeScopedLocals(); - if (condTrue) loopFlow.inherit(contFlow); - else loopFlow.inheritConditional(contFlow); + contFlow.freeScopedLocals(); + if (condTrue) loopFlow.inherit(contFlow); + else loopFlow.inheritConditional(contFlow); + this.currentFlow = loopFlow; + } + + var incrStmts = new Array(); + { + let incrementor = statement.incrementor; + if (incrementor) { + let incrFlow = loopFlow.fork(); + this.currentFlow = incrFlow; + incrStmts.push( + this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP) + ); + this.performAutoreleases(incrFlow, incrStmts); + incrFlow.freeScopedLocals(); + loopFlow.inherit(incrFlow); + this.currentFlow = loopFlow; + } + } + + // Detect if local flags are incompatible before and after looping, and if + // so recompile by unifying local flags before and after the loop. + if (Flow.hasIncompatibleLocalStates(loopFlowBefore, loopFlow)) { + assert(!overrideLoopFlow); // should not have to recompile twice + loopFlow.freeScopedLocals(); + flow.freeScopedLocals(); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return this.doCompileForStatement(statement, loopFlow); + } + flow.inherit(loopFlow); this.currentFlow = flow; @@ -2927,7 +2942,7 @@ export class Compiler extends DiagnosticEmitter { // ensure conversion and wrapping in case the respective function doesn't on its own var currentType = this.currentType; var wrap = (constraints & Constraints.MUST_WRAP) != 0; - if (currentType != contextualType) { + if (currentType != contextualType.nonNullableType) { // allow assigning non-nullable to nullable if (constraints & Constraints.CONV_EXPLICIT) { expr = this.convertExpression(expr, currentType, contextualType, true, wrap, expression); wrap = false; @@ -5194,6 +5209,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeAssignment( target, expr, // TODO: delay release above if possible? + this.currentType, left, resolver.currentThisExpression, resolver.currentElementExpression, @@ -5327,9 +5343,11 @@ export class Compiler extends DiagnosticEmitter { // compile the value and do the assignment assert(targetType != Type.void); + var valueExpr = this.compileExpression(valueExpression, targetType, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN); return this.makeAssignment( target, - this.compileExpression(valueExpression, targetType, Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN), + valueExpr, + this.currentType, expression, thisExpression, elementExpression, @@ -5343,6 +5361,8 @@ export class Compiler extends DiagnosticEmitter { target: Element, /** Value expression that has been compiled in a previous step already. */ valueExpr: ExpressionRef, + /** Value expression type. */ + valueType: Type, /** Expression reference. Has already been compiled to `valueExpr`. */ valueExpression: Expression, /** `this` expression reference if a field or property set. */ @@ -5368,7 +5388,7 @@ export class Compiler extends DiagnosticEmitter { this.currentType = tee ? (target).type : Type.void; return module.unreachable(); } - return this.makeLocalAssignment(target, valueExpr, tee); + return this.makeLocalAssignment(target, valueExpr, valueType, tee); } case ElementKind.GLOBAL: { if (!this.compileGlobal(target)) return module.unreachable(); @@ -5533,10 +5553,12 @@ export class Compiler extends DiagnosticEmitter { /** Makes an assignment to a local, possibly retaining and releasing affected references and keeping track of wrap and null states. */ private makeLocalAssignment( - /** The local to assign to. */ + /** Local to assign to. */ local: Local, - /** The value to assign. */ + /** Value to assign. */ valueExpr: ExpressionRef, + /** Value type. */ + valueType: Type, /** Whether to tee the value. */ tee: bool ): ExpressionRef { @@ -5547,7 +5569,7 @@ export class Compiler extends DiagnosticEmitter { var localIndex = local.index; if (type.is(TypeFlags.NULLABLE)) { - if (flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL); + if (!valueType.is(TypeFlags.NULLABLE) || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL); else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL); } flow.setLocalFlag(localIndex, LocalFlags.WRITTENTO); @@ -8055,7 +8077,18 @@ export class Compiler extends DiagnosticEmitter { } case ElementKind.FIELD: { // instance field assert((target).memoryOffset >= 0); - let thisExpr = this.compileExpression(assert(this.resolver.currentThisExpression), this.options.usizeType); + let thisExpression = assert(this.resolver.currentThisExpression); + let thisExpr = this.compileExpression(thisExpression, this.options.usizeType); + // FIXME + // let thisType = this.currentType; + // if (thisType.is(TypeFlags.NULLABLE)) { + // if (!flow.isNonnull(thisExpr, thisType)) { + // this.error( + // DiagnosticCode.Object_is_possibly_null, + // thisExpression.range + // ); + // } + // } this.currentType = (target).type; return module.load( (target).type.byteSize, @@ -8440,6 +8473,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeAssignment( target, expr, + this.currentType, expression.operand, resolver.currentThisExpression, resolver.currentElementExpression, @@ -8451,6 +8485,7 @@ export class Compiler extends DiagnosticEmitter { var setValue = this.makeAssignment( target, expr, // includes a tee of getValue to tempLocal + this.currentType, expression.operand, resolver.currentThisExpression, resolver.currentElementExpression, @@ -8824,6 +8859,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeAssignment( target, expr, + this.currentType, expression.operand, resolver.currentThisExpression, resolver.currentElementExpression, diff --git a/src/diagnostics.ts b/src/diagnostics.ts index 356fd1d0ab..5fd4a5f47b 100644 --- a/src/diagnostics.ts +++ b/src/diagnostics.ts @@ -261,6 +261,8 @@ export abstract class DiagnosticEmitter { /** Diagnostic messages emitted so far. */ diagnostics: DiagnosticMessage[]; + /** Diagnostic messages already seen, by range. */ + private seen: Map> = new Map(); /** Initializes this diagnostic emitter. */ protected constructor(diagnostics: DiagnosticMessage[] | null = null) { @@ -277,6 +279,19 @@ export abstract class DiagnosticEmitter { arg1: string | null = null, arg2: string | null = null ): void { + // It is possible that the same diagnostic is emitted twice, for example + // when compiling generics with different types or when recompiling a loop + // because our initial assumptions didn't hold. Deduplicate these. + var seen = this.seen; + if (seen.has(range)) { + let codes = seen.get(range)!; + if (codes.has(code)) return; + codes.add(code); + } else { + let codes = new Set(); + codes.add(code); + seen.set(range, codes); + } var message = DiagnosticMessage.create(code, category, arg0, arg1, arg2).withRange(range); if (relatedRange) message.relatedRange = relatedRange; this.diagnostics.push(message); diff --git a/src/flow.ts b/src/flow.ts index 355722182c..5af5fbc188 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -617,6 +617,31 @@ export class Flow { this.localFlags = combinedFlags; } + /** Tests if the specified flows have differing local states. */ + static hasIncompatibleLocalStates(before: Flow, after: Flow): bool { + var numThisLocalFlags = before.localFlags.length; + var numOtherLocalFlags = after.localFlags.length; + var parentFunction = before.parentFunction; + assert(parentFunction === after.parentFunction); + var localsByIndex = parentFunction.localsByIndex; + assert(localsByIndex === after.parentFunction.localsByIndex); + for (let i = 0, k = min(numThisLocalFlags, numOtherLocalFlags); i < k; ++i) { + let local = localsByIndex[i]; + let type = local.type; + if (type.is(TypeFlags.SHORT | TypeFlags.INTEGER)) { + if (before.isLocalFlag(i, LocalFlags.WRAPPED) && !after.isLocalFlag(i, LocalFlags.WRAPPED)) { + return true; + } + } + if (type.is(TypeFlags.REFERENCE)) { + if (before.isLocalFlag(i, LocalFlags.NONNULL) && !after.isLocalFlag(i, LocalFlags.NONNULL)) { + return true; + } + } + } + return false; + } + /** Unifies local flags between this and the other flow. */ unifyLocalFlags(other: Flow): void { var numThisLocalFlags = this.localFlags.length; diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 8d5b6b0897..6e61a65980 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -3665,7 +3665,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -3726,7 +3726,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -3743,7 +3743,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_s @@ -3824,7 +3824,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -3851,7 +3851,7 @@ local.set $5 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $3 i32.load offset=12 @@ -3906,7 +3906,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $4 @@ -3935,7 +3935,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_s @@ -3989,7 +3989,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -4006,7 +4006,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_s @@ -4062,7 +4062,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -4788,7 +4788,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -4845,7 +4845,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -4862,7 +4862,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_u @@ -4937,7 +4937,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -4964,7 +4964,7 @@ local.set $5 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $3 i32.load offset=12 @@ -5019,7 +5019,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $4 @@ -5048,7 +5048,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_u @@ -5100,7 +5100,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -5117,7 +5117,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_u @@ -5171,7 +5171,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -6064,7 +6064,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -6125,7 +6125,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -6142,7 +6142,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_s @@ -6223,7 +6223,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -6250,7 +6250,7 @@ local.set $5 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $3 i32.load offset=12 @@ -6305,7 +6305,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $4 @@ -6334,7 +6334,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_s @@ -6388,7 +6388,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -6405,7 +6405,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_s @@ -6461,7 +6461,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -7189,7 +7189,7 @@ (local $7 i32) call $~lib/map/Map#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -7246,7 +7246,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -7263,7 +7263,7 @@ end i32.const 0 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_u @@ -7338,7 +7338,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -7365,7 +7365,7 @@ local.set $5 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $3 i32.load offset=12 @@ -7420,7 +7420,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $4 @@ -7449,7 +7449,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_u @@ -7501,7 +7501,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -7518,7 +7518,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_u @@ -7572,7 +7572,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index e66454ebb8..e17acd0e61 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -5555,7 +5555,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_s @@ -5619,7 +5619,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -5637,7 +5637,7 @@ end i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_s @@ -5720,7 +5720,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -5750,7 +5750,7 @@ local.set $4 i32.const 0 local.set $5 - loop $for-loop|2 + loop $for-loop|4 local.get $5 local.get $1 call $~lib/array/Array#get:length @@ -5806,7 +5806,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -5837,7 +5837,7 @@ end i32.const 0 local.set $5 - loop $for-loop|3 + loop $for-loop|6 local.get $5 i32.const 50 i32.lt_s @@ -5895,7 +5895,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -5913,7 +5913,7 @@ end i32.const 0 local.set $5 - loop $for-loop|4 + loop $for-loop|8 local.get $5 i32.const 50 i32.lt_s @@ -5974,7 +5974,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -7162,7 +7162,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_u @@ -7222,7 +7222,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -7240,7 +7240,7 @@ end i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_u @@ -7317,7 +7317,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -7347,7 +7347,7 @@ local.set $4 i32.const 0 local.set $5 - loop $for-loop|2 + loop $for-loop|4 local.get $5 local.get $1 call $~lib/array/Array#get:length @@ -7403,7 +7403,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -7434,7 +7434,7 @@ end i32.const 0 local.set $5 - loop $for-loop|3 + loop $for-loop|6 local.get $5 i32.const 50 i32.lt_u @@ -7490,7 +7490,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -7508,7 +7508,7 @@ end i32.const 0 local.set $5 - loop $for-loop|4 + loop $for-loop|8 local.get $5 i32.const 50 i32.lt_u @@ -7567,7 +7567,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -8791,7 +8791,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_s @@ -8855,7 +8855,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -8873,7 +8873,7 @@ end i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_s @@ -8956,7 +8956,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -8986,7 +8986,7 @@ local.set $4 i32.const 0 local.set $5 - loop $for-loop|2 + loop $for-loop|4 local.get $5 local.get $1 call $~lib/array/Array#get:length @@ -9042,7 +9042,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -9073,7 +9073,7 @@ end i32.const 0 local.set $5 - loop $for-loop|3 + loop $for-loop|6 local.get $5 i32.const 50 i32.lt_s @@ -9131,7 +9131,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -9149,7 +9149,7 @@ end i32.const 0 local.set $5 - loop $for-loop|4 + loop $for-loop|8 local.get $5 i32.const 50 i32.lt_s @@ -9210,7 +9210,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -10398,7 +10398,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_u @@ -10458,7 +10458,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -10476,7 +10476,7 @@ end i32.const 0 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_u @@ -10553,7 +10553,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -10583,7 +10583,7 @@ local.set $4 i32.const 0 local.set $5 - loop $for-loop|2 + loop $for-loop|4 local.get $5 local.get $1 call $~lib/array/Array#get:length @@ -10639,7 +10639,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -10670,7 +10670,7 @@ end i32.const 0 local.set $5 - loop $for-loop|3 + loop $for-loop|6 local.get $5 i32.const 50 i32.lt_u @@ -10726,7 +10726,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -10744,7 +10744,7 @@ end i32.const 0 local.set $5 - loop $for-loop|4 + loop $for-loop|8 local.get $5 i32.const 50 i32.lt_u @@ -10803,7 +10803,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|4 + br $for-loop|8 end end local.get $0 diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 44a04f6866..e005bdbd36 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -2810,7 +2810,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -2845,7 +2845,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -2862,7 +2862,7 @@ end i32.const 50 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_s @@ -2898,7 +2898,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -2920,7 +2920,7 @@ local.set $3 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $2 i32.load offset=12 @@ -2949,7 +2949,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -2967,7 +2967,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_s @@ -3002,7 +3002,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -3019,7 +3019,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_s @@ -3068,7 +3068,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -3502,7 +3502,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -3537,7 +3537,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -3554,7 +3554,7 @@ end i32.const 50 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_u @@ -3590,7 +3590,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -3612,7 +3612,7 @@ local.set $3 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $2 i32.load offset=12 @@ -3641,7 +3641,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -3659,7 +3659,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_u @@ -3694,7 +3694,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -3711,7 +3711,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_u @@ -3760,7 +3760,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -4300,7 +4300,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_s @@ -4335,7 +4335,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -4352,7 +4352,7 @@ end i32.const 50 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_s @@ -4388,7 +4388,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -4410,7 +4410,7 @@ local.set $3 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $2 i32.load offset=12 @@ -4439,7 +4439,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -4457,7 +4457,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_s @@ -4492,7 +4492,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -4509,7 +4509,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_s @@ -4558,7 +4558,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 @@ -4994,7 +4994,7 @@ (local $3 i32) call $~lib/set/Set#constructor local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $0 i32.const 100 i32.lt_u @@ -5029,7 +5029,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|0 + br $for-loop|1 end end local.get $1 @@ -5046,7 +5046,7 @@ end i32.const 50 local.set $0 - loop $for-loop|1 + loop $for-loop|3 local.get $0 i32.const 100 i32.lt_u @@ -5082,7 +5082,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|3 end end local.get $1 @@ -5104,7 +5104,7 @@ local.set $3 i32.const 0 local.set $0 - loop $for-loop|2 + loop $for-loop|4 local.get $0 local.get $2 i32.load offset=12 @@ -5133,7 +5133,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|2 + br $for-loop|4 end end local.get $3 @@ -5151,7 +5151,7 @@ end i32.const 0 local.set $0 - loop $for-loop|3 + loop $for-loop|6 local.get $0 i32.const 50 i32.lt_u @@ -5186,7 +5186,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|3 + br $for-loop|6 end end local.get $1 @@ -5203,7 +5203,7 @@ end i32.const 0 local.set $0 - loop $for-loop|4 + loop $for-loop|8 local.get $0 i32.const 50 i32.lt_u @@ -5252,7 +5252,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|4 + br $for-loop|8 end end local.get $1 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 09b2e2c318..be2d7c4564 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -4495,7 +4495,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_s @@ -4532,7 +4532,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -4550,7 +4550,7 @@ end i32.const 50 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_s @@ -4586,7 +4586,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -4610,7 +4610,7 @@ local.set $2 i32.const 0 local.set $3 - loop $for-loop|2 + loop $for-loop|4 local.get $3 local.get $1 call $~lib/array/Array#get:length @@ -4639,7 +4639,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|2 + br $for-loop|4 end end local.get $2 @@ -4658,7 +4658,7 @@ end i32.const 0 local.set $3 - loop $for-loop|3 + loop $for-loop|6 local.get $3 i32.const 50 i32.lt_s @@ -4696,7 +4696,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -4714,7 +4714,7 @@ end i32.const 0 local.set $3 - loop $for-loop|4 + loop $for-loop|8 local.get $3 i32.const 50 i32.lt_s @@ -4768,7 +4768,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -5437,7 +5437,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_u @@ -5474,7 +5474,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -5492,7 +5492,7 @@ end i32.const 50 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_u @@ -5528,7 +5528,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -5552,7 +5552,7 @@ local.set $2 i32.const 0 local.set $3 - loop $for-loop|2 + loop $for-loop|4 local.get $3 local.get $1 call $~lib/array/Array#get:length @@ -5581,7 +5581,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|2 + br $for-loop|4 end end local.get $2 @@ -5600,7 +5600,7 @@ end i32.const 0 local.set $3 - loop $for-loop|3 + loop $for-loop|6 local.get $3 i32.const 50 i32.lt_u @@ -5638,7 +5638,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -5656,7 +5656,7 @@ end i32.const 0 local.set $3 - loop $for-loop|4 + loop $for-loop|8 local.get $3 i32.const 50 i32.lt_u @@ -5710,7 +5710,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -6409,7 +6409,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_s @@ -6446,7 +6446,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -6464,7 +6464,7 @@ end i32.const 50 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_s @@ -6500,7 +6500,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -6524,7 +6524,7 @@ local.set $2 i32.const 0 local.set $3 - loop $for-loop|2 + loop $for-loop|4 local.get $3 local.get $1 call $~lib/array/Array#get:length @@ -6553,7 +6553,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|2 + br $for-loop|4 end end local.get $2 @@ -6572,7 +6572,7 @@ end i32.const 0 local.set $3 - loop $for-loop|3 + loop $for-loop|6 local.get $3 i32.const 50 i32.lt_s @@ -6610,7 +6610,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -6628,7 +6628,7 @@ end i32.const 0 local.set $3 - loop $for-loop|4 + loop $for-loop|8 local.get $3 i32.const 50 i32.lt_s @@ -6682,7 +6682,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|4 + br $for-loop|8 end end local.get $0 @@ -7351,7 +7351,7 @@ local.set $0 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $1 i32.const 100 i32.lt_u @@ -7388,7 +7388,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -7406,7 +7406,7 @@ end i32.const 50 local.set $1 - loop $for-loop|1 + loop $for-loop|3 local.get $1 i32.const 100 i32.lt_u @@ -7442,7 +7442,7 @@ i32.const 1 i32.add local.set $1 - br $for-loop|1 + br $for-loop|3 end end local.get $0 @@ -7466,7 +7466,7 @@ local.set $2 i32.const 0 local.set $3 - loop $for-loop|2 + loop $for-loop|4 local.get $3 local.get $1 call $~lib/array/Array#get:length @@ -7495,7 +7495,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|2 + br $for-loop|4 end end local.get $2 @@ -7514,7 +7514,7 @@ end i32.const 0 local.set $3 - loop $for-loop|3 + loop $for-loop|6 local.get $3 i32.const 50 i32.lt_u @@ -7552,7 +7552,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|3 + br $for-loop|6 end end local.get $0 @@ -7570,7 +7570,7 @@ end i32.const 0 local.set $3 - loop $for-loop|4 + loop $for-loop|8 local.get $3 i32.const 50 i32.lt_u @@ -7624,7 +7624,7 @@ i32.const 1 i32.add local.set $3 - br $for-loop|4 + br $for-loop|8 end end local.get $0 diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 4f8394401f..de50811f95 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -25458,16 +25458,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Int8Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -25497,36 +25496,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Int8Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Int8Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Int8Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -25538,11 +25531,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array.wrap (; 421 ;) (param $0 i32) (result i32) @@ -25610,16 +25603,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint8Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -25647,36 +25639,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Uint8Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Uint8Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Uint8Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -25688,11 +25674,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray.wrap (; 423 ;) (param $0 i32) (result i32) @@ -25760,16 +25746,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint8ClampedArray#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -25797,36 +25782,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Uint8ClampedArray.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Uint8ClampedArray#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -25838,11 +25817,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array.wrap (; 425 ;) (param $0 i32) (result i32) @@ -25910,16 +25889,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Int16Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -25949,36 +25927,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Int16Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Int16Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Int16Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -25990,11 +25962,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array.wrap (; 427 ;) (param $0 i32) (result i32) @@ -26062,16 +26034,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint16Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26099,36 +26070,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Uint16Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Uint16Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Uint16Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26140,11 +26105,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array.wrap (; 429 ;) (param $0 i32) (result i32) @@ -26212,16 +26177,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Int32Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26247,36 +26211,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Int32Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Int32Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Int32Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26288,11 +26246,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array.wrap (; 431 ;) (param $0 i32) (result i32) @@ -26360,16 +26318,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint32Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26395,36 +26352,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Uint32Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Uint32Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Uint32Array#__get - local.get $6 i32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26436,11 +26387,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array.wrap (; 433 ;) (param $0 i32) (result i32) @@ -26508,16 +26459,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Int64Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26544,36 +26494,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Int64Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Int64Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Int64Array#__get - local.get $6 i64.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26585,11 +26529,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array.wrap (; 435 ;) (param $0 i32) (result i32) @@ -26657,16 +26601,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Uint64Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26693,36 +26636,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Uint64Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Uint64Array#__get - local.set $6 - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Uint64Array#__get - local.get $6 i64.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26734,11 +26671,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float32Array.wrap (; 437 ;) (param $0 i32) (result i32) @@ -26806,16 +26743,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 f32) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Float32Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26842,34 +26778,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Float32Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Float32Array#__get - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Float32Array#__get f32.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -26881,11 +26813,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float64Array.wrap (; 439 ;) (param $0 i32) (result i32) @@ -26953,16 +26885,15 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 f64) i32.const 3452 i32.load - local.tee $3 + local.tee $2 call $~lib/typedarray/Float64Array#constructor - local.tee $4 + local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 @@ -26989,34 +26920,30 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice + local.set $3 i32.const 1 global.set $~lib/argc - local.tee $5 + local.get $3 call $~lib/typedarray/Float64Array.wrap - local.set $2 + local.set $4 i32.const 0 local.set $0 loop $for-loop|1 local.get $0 - local.get $3 + local.get $2 i32.lt_s if local.get $1 local.get $0 call $~lib/typedarray/Float64Array#__get - local.get $2 - i32.eqz - if - unreachable - end - local.get $2 + local.get $4 local.get $0 call $~lib/typedarray/Float64Array#__get f64.ne if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -27028,11 +26955,11 @@ br $for-loop|1 end end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $2 + local.get $3 + call $~lib/rt/pure/__release + local.get $4 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 441 ;) (param $0 i32) @@ -27100,7 +27027,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -27133,7 +27060,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -27595,7 +27522,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -27628,7 +27555,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -27992,7 +27919,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -28025,7 +27952,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -28614,7 +28541,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -28647,7 +28574,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -29138,7 +29065,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -29178,7 +29105,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -29520,7 +29447,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -29553,7 +29480,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -30075,7 +30002,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -30108,7 +30035,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -30466,7 +30393,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -30499,7 +30426,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -30989,7 +30916,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -31022,7 +30949,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -31380,7 +31307,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -31420,7 +31347,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -31850,7 +31777,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -31888,7 +31815,7 @@ call $~lib/builtins/trace i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable diff --git a/tests/compiler/std/typedarray.ts b/tests/compiler/std/typedarray.ts index fb2f05f4cb..62b06ab35f 100644 --- a/tests/compiler/std/typedarray.ts +++ b/tests/compiler/std/typedarray.ts @@ -653,7 +653,7 @@ function testArrayWrap, T extends number>(): void { array[i] = values[i]; } var buffer = array.buffer.slice(array.byteOffset, array.byteOffset + array.byteLength); - var result: TArray | null = null; + var result: TArray; if (array instanceof Int8Array) { result = Int8Array.wrap(buffer); } else if (array instanceof Uint8Array) { @@ -676,9 +676,12 @@ function testArrayWrap, T extends number>(): void { result = Float32Array.wrap(buffer); } else if (array instanceof Float64Array) { result = Float64Array.wrap(buffer); + } else { + assert(false); + return; } for (let i = 0; i < length; i++) { - assert(array[i] == result![i]); + assert(array[i] == result[i]); } } diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 42f472af57..945fc7bf97 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -37306,7 +37306,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37355,7 +37354,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -37379,12 +37377,6 @@ local.get $4 call $~lib/typedarray/Int8Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Int8Array#__get i32.eq @@ -37392,7 +37384,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -37565,7 +37557,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37612,7 +37603,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -37636,12 +37626,6 @@ local.get $4 call $~lib/typedarray/Uint8Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Uint8Array#__get i32.eq @@ -37649,7 +37633,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -37822,7 +37806,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37869,7 +37852,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -37893,12 +37875,6 @@ local.get $4 call $~lib/typedarray/Uint8ClampedArray#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Uint8ClampedArray#__get i32.eq @@ -37906,7 +37882,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -38079,7 +38055,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38128,7 +38103,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -38152,12 +38126,6 @@ local.get $4 call $~lib/typedarray/Int16Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Int16Array#__get i32.eq @@ -38165,7 +38133,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -38338,7 +38306,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38385,7 +38352,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -38409,12 +38375,6 @@ local.get $4 call $~lib/typedarray/Uint16Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Uint16Array#__get i32.eq @@ -38422,7 +38382,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -38595,7 +38555,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38640,7 +38599,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -38664,12 +38622,6 @@ local.get $4 call $~lib/typedarray/Int32Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Int32Array#__get i32.eq @@ -38677,7 +38629,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -38850,7 +38802,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38895,7 +38846,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -38919,12 +38869,6 @@ local.get $4 call $~lib/typedarray/Uint32Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Uint32Array#__get i32.eq @@ -38932,7 +38876,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -39105,7 +39049,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39151,7 +39094,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -39175,12 +39117,6 @@ local.get $4 call $~lib/typedarray/Int64Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Int64Array#__get i64.eq @@ -39188,7 +39124,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -39361,7 +39297,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39407,7 +39342,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -39431,12 +39365,6 @@ local.get $4 call $~lib/typedarray/Uint64Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Uint64Array#__get i64.eq @@ -39444,7 +39372,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -39617,7 +39545,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39663,7 +39590,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -39687,12 +39613,6 @@ local.get $4 call $~lib/typedarray/Float32Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Float32Array#__get f32.eq @@ -39700,7 +39620,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -39873,7 +39793,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39919,7 +39838,6 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $5 i32.const 0 - call $~lib/rt/pure/__retain local.set $6 i32.const 1 global.set $~lib/argc @@ -39943,12 +39861,6 @@ local.get $4 call $~lib/typedarray/Float64Array#__get local.get $6 - local.tee $7 - if (result i32) - local.get $7 - else - unreachable - end local.get $4 call $~lib/typedarray/Float64Array#__get f64.eq @@ -39956,7 +39868,7 @@ if i32.const 0 i32.const 416 - i32.const 681 + i32.const 684 i32.const 4 call $~lib/builtins/abort unreachable @@ -40100,7 +40012,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -40140,7 +40052,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -41019,7 +40931,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -41059,7 +40971,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -41932,7 +41844,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -41972,7 +41884,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -42923,7 +42835,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -42963,7 +42875,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -43866,7 +43778,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -43906,7 +43818,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -44764,7 +44676,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -44804,7 +44716,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -45707,7 +45619,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -45747,7 +45659,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -46682,7 +46594,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -46722,7 +46634,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -47616,7 +47528,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -47656,7 +47568,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -48556,7 +48468,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -48596,7 +48508,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable @@ -49360,7 +49272,7 @@ if i32.const 0 i32.const 416 - i32.const 699 + i32.const 702 i32.const 2 call $~lib/builtins/abort unreachable @@ -49398,7 +49310,7 @@ if i32.const 0 i32.const 416 - i32.const 705 + i32.const 708 i32.const 6 call $~lib/builtins/abort unreachable From baacbb64189b61501241e85abdaa98008eaf0d63 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 7 Jan 2020 13:06:49 +0100 Subject: [PATCH 04/19] progress --- src/compiler.ts | 712 ++++++++++++++++++++++++++++++------------------ src/flow.ts | 457 ++++++++++++++++++++----------- src/resolver.ts | 4 +- 3 files changed, 747 insertions(+), 426 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index a6e9371797..063a78949d 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -90,6 +90,7 @@ import { FlowFlags, Flow, LocalFlags, + ConditionKind, findUsedLocals } from "./flow"; @@ -1281,7 +1282,7 @@ export class Compiler extends DiagnosticEmitter { ) ) ); - flow.setLocalFlag(index, LocalFlags.RETAINED | LocalFlags.PARAMETER); + flow.setLocalFlag(index, LocalFlags.RETAINED); } } @@ -1906,82 +1907,117 @@ export class Compiler extends DiagnosticEmitter { } compileDoStatement( + /** Statement to compile. */ statement: DoStatement ): ExpressionRef { - var module = this.module; + return this.doCompileDoStatement(statement, null); + } + private doCompileDoStatement( + /** Statement to compile. */ + statement: DoStatement, + /** If recompiling, the flow with differing local flags that triggered it. */ + flowAfter: Flow | null + ): ExpressionRef { + var module = this.module; var outerFlow = this.currentFlow; + + // (block $break └►┐ flow + // (loop $continue ├◄───────────┐ recompile? + // (body) └─┐ bodyFlow │ + // [autorelease] ┌─┘ │ + // ┌◄┼►╢ │ breaks or terminates? + // (local.set $tcond (condition)) │ └─┐ condFlow │ + // [autorelease] │ ┌─┘ │ + // (br_if (local.get $tcond) $continue) ├◄┴────────────┘ condition? + // ) └─┐ + // ) ┌─┘ + var label = outerFlow.pushBreakLabel(); - var innerFlow = outerFlow.fork(); - var breakLabel = "break|" + label; - innerFlow.breakLabel = breakLabel; - var continueLabel = "continue|" + label; - innerFlow.continueLabel = continueLabel; + var flow = outerFlow.fork(); + if (flowAfter) flow.unifyLocalFlags(flowAfter); + var flowBefore = flow.fork(); + this.currentFlow = flow; - // Compile the condition before the body in order to... - var condFlow = outerFlow.fork(); - this.currentFlow = condFlow; - var condExpr = module.precomputeExpression( - this.makeIsTrueish( - this.compileExpression(statement.condition, Type.i32), - this.currentType - ) - ); - assert(!condFlow.hasScopedLocals); - // ...unify local states before and after the condition has been executed the first time - innerFlow.unifyLocalFlags(condFlow); - this.currentFlow = innerFlow; + var breakLabel = "do-break|" + label; + flow.breakLabel = breakLabel; + var continueLabel = "do-continue|" + label; + flow.continueLabel = continueLabel; + + // Compile the body (always executes) + var bodyFlow = flow.fork(); + this.currentFlow = bodyFlow; + var bodyStmts = new Array(); + var body = statement.statement; + if (body.kind == NodeKind.BLOCK) { + this.compileStatements((body).statements, false, bodyStmts); + } else { + bodyStmts.push(this.compileStatement(body)); + } - var stmts = new Array(); - if (statement.statement.kind == NodeKind.BLOCK) { - this.compileStatements((statement.statement).statements, false, stmts); + // Shortcut if body never falls through + if (bodyFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + bodyStmts.push(module.unreachable()); + flow.inherit(bodyFlow); + + // Otherwise evaluate the condition } else { - stmts.push( - this.compileStatement(statement.statement) + this.performAutoreleases(bodyFlow, bodyStmts); + + let condFlow = flow.fork(); + this.currentFlow = condFlow; + let condExpr = module.precomputeExpression( + this.makeIsTrueish( + this.compileExpression(statement.condition, Type.i32), + this.currentType + ) ); - } - var alwaysFalse = false; - if (getExpressionId(condExpr) == ExpressionId.Const) { - assert(getExpressionType(condExpr) == NativeType.I32); - if (!getConstValueI32(condExpr)) alwaysFalse = true; - } - var terminates = innerFlow.is(FlowFlags.TERMINATES); - var continues = innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); - var breaks = innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS); + let condKind = evaluateConditionKind(condExpr); - // (block $break ;; (1) skip if no breaks - // (loop $continue ;; (2) skip if skipping (4) + no continues - // (...) ;; (3) - // (br_if cond $continue) ;; (4) skip if (3) does not fall through or always false - // ) - // ) - var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); + // Shortcut if condition is always false + if (condKind == ConditionKind.FALSE) { + flow.inherit(bodyFlow); + } else { + let tcond = condFlow.getTempLocal(Type.bool); + bodyStmts.push(module.local_set(tcond.index, condExpr)); + this.performAutoreleases(condFlow, bodyStmts); + bodyStmts.push(module.br(continueLabel, module.local_get(tcond.index, NativeType.I32))); + condFlow.freeTempLocal(tcond); + flow.inherit(condFlow); - if (fallsThrough) { - this.performAutoreleases(innerFlow, stmts); - if (!alwaysFalse) { // (4) - stmts.push(module.br(continueLabel, condExpr)); + // Detect if local flags are incompatible before and after looping, and + // if so recompile by unifying local flags between iterations. + if (Flow.hasIncompatibleLocalStates(flowBefore, flow)) { + assert(!flowAfter); // should work on the first attempt + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return this.doCompileWhileStatement(statement, flow); + } } } - var expr = flatten(module, stmts, NativeType.None); - if (fallsThrough && !alwaysFalse || continues) { // (2) - expr = module.loop(continueLabel, expr); - } - if (breaks) { // (1) - expr = module.block(breakLabel, [ expr ]); - } - // Switch back to the parent flow - innerFlow.freeScopedLocals(); - outerFlow.popBreakLabel(); - innerFlow.unset( + // Finalize + assert(!flow.hasScopedLocals); + if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { + flow.unset(FlowFlags.TERMINATES); + } + flow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES ); - outerFlow.inherit(innerFlow); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); this.currentFlow = outerFlow; + var expr = module.block(breakLabel, [ + module.loop(continueLabel, + module.block(null, bodyStmts) + ) + ]); + if (flow.is(FlowFlags.TERMINATES)) { + expr = module.block(null, [ expr, module.unreachable() ]); + } return expr; } @@ -2007,145 +2043,181 @@ export class Compiler extends DiagnosticEmitter { private doCompileForStatement( /** Statement to compile. */ statement: ForStatement, - /** If recompiling, the loop flow with differing local flags that triggered it. */ - overrideLoopFlow: Flow | null + /** If recompiling, the flow with differing local flags that triggered it. */ + flowAfter: Flow | null ): ExpressionRef { var module = this.module; var outerFlow = this.currentFlow; - // (initializer) ┐ flow - // (block $break │ - // (loop $loop │ ┐ loopFlow - // (if (condition) │ │ - // (block $continue │ │ ┐ contFlow - // (body) │ │ ┘ - // ) │ │ - // (incrementor) │ │ ┐ incrFlow - // │ │ ┘ - // (br $loop) │ │ - // ) │ ┘ - // ) │ - // ) ┘ + // (initializer) └►┐ flow + // (block $break │ + // (loop $loop ├◄───────────┐ recompile? + // (local.set $tcond (condition)) └─┐ condFlow │ + // [autorelease] ┌─┘ │ + // (if (local.get $tcond) ┌◄┤ │ condition? + // (block $continue │ │ │ + // (body) │ └─┐ bodyFlow │ + // [autorelease] │ ┌─┘ │ + // ) ├◄┼►╢ │ breaks or terminates? + // (incrementor) │ └─┐ incrFlow │ + // [autorelease] │ ┌─┘ │ + // │ └────────────┘ + // (br $loop) └─┐ + // ) │ + // ) │ + // ) │ + // [autorelease] ┌─┘ var label = outerFlow.pushBreakLabel(); var stmts = new Array(); var flow = outerFlow.fork(); this.currentFlow = flow; - { - let initializer = statement.initializer; - if (initializer) stmts.push(this.compileStatement(initializer)); + var breakLabel = "for-break" + label; + flow.breakLabel = breakLabel; + var continueLabel = "for-continue|" + label; + flow.continueLabel = continueLabel; + var loopLabel = "for-loop|" + label; + + // Compile initializer if present (but wait with autoreleases) + var initializer = statement.initializer; + if (initializer) { + assert( + initializer.kind == NodeKind.EXPRESSION || + initializer.kind == NodeKind.VARIABLE + ); + stmts.push(this.compileStatement(initializer)); } - var loopFlow = flow.fork(); - if (overrideLoopFlow) loopFlow.unifyLocalFlags(overrideLoopFlow); - var loopFlowBefore = loopFlow.fork(); + if (flowAfter) flow.unifyLocalFlags(flowAfter); + var flowBefore = flow.fork(); + + // Precompute the condition + var condFlow = flow.fork(); + this.currentFlow = condFlow; var condExpr: ExpressionRef; - var condTrue = false; - { - let condition = statement.condition; - if (condition) { - condExpr = module.precomputeExpression( - this.makeIsTrueish( - this.compileExpression(condition, Type.bool), - this.currentType - ) - ); - if (getExpressionId(condExpr) == ExpressionId.Const) { - if (!getConstValueI32(condExpr)) { // condition is always false - // only initializer will run -> simplify - this.performAutoreleases(loopFlow, stmts); - loopFlow.freeScopedLocals(); - flow.inherit(loopFlow); - this.performAutoreleases(flow, stmts); - flow.freeScopedLocals(); - outerFlow.inherit(flow); - outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; - return flatten(module, stmts, NativeType.None); - } - condTrue = true; // condition is always true - } - } else { // omitted condition is always true - condExpr = module.i32(1); - condTrue = true; + var condKind: ConditionKind; + var condition = statement.condition; + if (condition) { + condExpr = module.precomputeExpression( + this.makeIsTrueish( + this.compileExpression(condition, Type.bool), + this.currentType + ) + ); + condKind = evaluateConditionKind(condExpr); + + // Shortcut if condition is always false (body never runs) + if (condKind == ConditionKind.FALSE) { + this.performAutoreleases(condFlow, stmts); + condFlow.freeScopedLocals(); + flow.inherit(condFlow); + this.performAutoreleases(flow, stmts); + flow.freeScopedLocals(); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return flatten(module, stmts, NativeType.None); } + } else { + condExpr = module.i32(1); + condKind = ConditionKind.TRUE; } - var contFlow = loopFlow.fork(); - this.currentFlow = contFlow; - var breakLabel = "for-break" + label; - contFlow.breakLabel = breakLabel; - var continueLabel = "for-continue|" + label; - contFlow.continueLabel = continueLabel; - var loopLabel = "for-loop|" + label; + // From here on condition is either always true or unknown - var contStmts = new Array(); - { - let body = statement.statement; - if (body.kind == NodeKind.BLOCK) { - this.compileStatements((body).statements, false, contStmts); - } else { - contStmts.push(this.compileStatement(body)); - } - if (contFlow.is(FlowFlags.TERMINATES) || flow.is(FlowFlags.BREAKS)) { - // contStmts.push(module.unreachable()); - } else { - this.performAutoreleases(contFlow, contStmts); - } - contFlow.freeScopedLocals(); - if (condTrue) loopFlow.inherit(contFlow); - else loopFlow.inheritConditional(contFlow); - this.currentFlow = loopFlow; + // Store condition result in a temp while we autorelease + var tcond = flow.getTempLocal(Type.bool); + var loopStmts = new Array(); + loopStmts.push(module.local_set(tcond.index, condExpr)); + this.performAutoreleases(condFlow, loopStmts); + condFlow.freeScopedLocals(); + + flow.inherit(condFlow); // always executes + this.currentFlow = flow; + + // Compile the body assuming the condition turned out true + var bodyFlow = flow.fork(); + bodyFlow.inheritNonnullIfTrue(condExpr); + this.currentFlow = bodyFlow; + var bodyStmts = new Array(); + var body = statement.statement; + if (body.kind == NodeKind.BLOCK) { + this.compileStatements((body).statements, false, bodyStmts); + } else { + bodyStmts.push(this.compileStatement(body)); + } + + // Check if body terminates + if (bodyFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + bodyStmts.push(module.unreachable()); + } else { + this.performAutoreleases(bodyFlow, bodyStmts); } + if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); + else flow.inheritBranch(bodyFlow); + bodyFlow.freeScopedLocals(); - var incrStmts = new Array(); - { + var ifStmts = new Array(); + ifStmts.push( + module.block(continueLabel, bodyStmts) + ); + + // Compile the incrementor if it runs + // Can still fall through to here if body continues, hence is already known to terminate + if (!bodyFlow.is(FlowFlags.TERMINATES) || bodyFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES)) { let incrementor = statement.incrementor; if (incrementor) { - let incrFlow = loopFlow.fork(); + let incrFlow = flow.fork(); this.currentFlow = incrFlow; - incrStmts.push( + ifStmts.push( this.compileExpression(incrementor, Type.void, Constraints.CONV_IMPLICIT | Constraints.WILL_DROP) ); - this.performAutoreleases(incrFlow, incrStmts); + this.performAutoreleases(incrFlow, ifStmts); incrFlow.freeScopedLocals(); - loopFlow.inherit(incrFlow); - this.currentFlow = loopFlow; + flow.inherit(incrFlow); // mostly local flags, also covers late termination by throwing + this.currentFlow = flow; } - } - // Detect if local flags are incompatible before and after looping, and if - // so recompile by unifying local flags before and after the loop. - if (Flow.hasIncompatibleLocalStates(loopFlowBefore, loopFlow)) { - assert(!overrideLoopFlow); // should not have to recompile twice - loopFlow.freeScopedLocals(); - flow.freeScopedLocals(); - outerFlow.popBreakLabel(); - this.currentFlow = outerFlow; - return this.doCompileForStatement(statement, loopFlow); - } + ifStmts.push( + module.br(loopLabel) + ); - flow.inherit(loopFlow); - this.currentFlow = flow; + // Detect if local flags are incompatible before and after looping, and if + // so recompile by unifying local flags between iterations. + if (Flow.hasIncompatibleLocalStates(flowBefore, flow)) { + assert(!flowAfter); // should work on the first attempt + assert(!bodyFlow.hasScopedLocals); + flow.freeScopedLocals(); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return this.doCompileForStatement(statement, flow); + } + } + loopStmts.push( + module.if(module.local_get(tcond.index, NativeType.I32), + module.block(null, ifStmts) + ) + ); stmts.push( module.block(breakLabel, [ module.loop(loopLabel, - module.if(condExpr, - module.block(null, [ - module.block(continueLabel, contStmts), - module.block(null, incrStmts), - module.br(loopLabel) - ]) - ) + module.block(null, loopStmts) ) ]) ); - if (!flow.is(FlowFlags.TERMINATES)) { - this.performAutoreleases(flow, stmts); - } else { + flow.freeTempLocal(tcond); + this.currentFlow = flow; + + // Finalize + if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { + flow.unset(FlowFlags.TERMINATES); + } + if (flow.is(FlowFlags.TERMINATES)) { stmts.push(module.unreachable()); + } else { + this.performAutoreleases(flow, stmts); } flow.freeScopedLocals(); flow.unset( @@ -2166,72 +2238,104 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var ifTrue = statement.ifTrue; var ifFalse = statement.ifFalse; - var outerFlow = this.currentFlow; - // The condition doesn't initiate a branch yet + // (if └►┐ flow + // (condition) ┌┴───────────┐ condition? + // (block │ │ + // (ifTrue) └►┐ thenFlow │ + // [autorelease] ┌─┘ │ + // ) ├─╢ │ + // (block │ ┌◄┤ present? + // (ifFalse) │ │ └►┐ elseFlow + // [autorelease] │ │ ┌─┘ + // ) │ │ ├─╢ + // ) └┬─────────┴─┘ + // ... ┌◄┘ + // [autorelease] incl. condition + + // Precompute the condition (always executes) var condExpr = module.precomputeExpression( this.makeIsTrueish( this.compileExpression(statement.condition, Type.bool), this.currentType ) ); + var condKind = evaluateConditionKind(condExpr); - // Try to eliminate unnecesssary branches if the condition is constant - if ( - getExpressionId(condExpr) == ExpressionId.Const && - getExpressionType(condExpr) == NativeType.I32 - ) { - return getConstValueI32(condExpr) - ? this.compileStatement(ifTrue) - : ifFalse - ? this.compileStatement(ifFalse) - : module.nop(); + // Shortcut if the condition is constant + switch (condKind) { + case ConditionKind.TRUE: { + return module.block(null, [ + module.drop(condExpr), + this.compileStatement(ifTrue) + ]); + } + case ConditionKind.FALSE: { + return ifFalse + ? module.block(null, [ + module.drop(condExpr), + this.compileStatement(ifFalse) + ]) + : module.drop(condExpr); + } } - // Each arm initiates a branch - var ifTrueStmts = new Array(); - var ifTrueFlow = outerFlow.fork(); - this.currentFlow = ifTrueFlow; - ifTrueFlow.inheritNonnullIfTrue(condExpr); + // From here on condition is always unknown + + var flow = this.currentFlow; + + // Compile ifTrue assuming the condition turned out true + var thenStmts = new Array(); + var thenFlow = flow.fork(); + this.currentFlow = thenFlow; + thenFlow.inheritNonnullIfTrue(condExpr); if (ifTrue.kind == NodeKind.BLOCK) { - this.compileStatements((ifTrue).statements, false, ifTrueStmts); + this.compileStatements((ifTrue).statements, false, thenStmts); } else { - ifTrueStmts.push(this.compileStatement(ifTrue)); + thenStmts.push(this.compileStatement(ifTrue)); } - if (!ifTrueFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifTrueFlow, ifTrueStmts); - ifTrueFlow.freeScopedLocals(); - this.currentFlow = outerFlow; + if (thenFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + thenStmts.push(module.unreachable()); + } else { + this.performAutoreleases(thenFlow, thenStmts); + } + thenFlow.freeScopedLocals(); + this.currentFlow = flow; + // Compile ifFalse assuming the condition turned out false, if present if (ifFalse) { - let ifFalseFlow = outerFlow.fork(); - this.currentFlow = ifFalseFlow; - ifFalseFlow.inheritNonnullIfFalse(condExpr); - let ifFalseStmts = new Array(); + let elseStmts = new Array(); + let elseFlow = flow.fork(); + this.currentFlow = elseFlow; + elseFlow.inheritNonnullIfFalse(condExpr); if (ifFalse.kind == NodeKind.BLOCK) { - this.compileStatements((ifFalse).statements, false, ifFalseStmts); + this.compileStatements((ifFalse).statements, false, elseStmts); } else { - ifFalseStmts.push(this.compileStatement(ifFalse)); + elseStmts.push(this.compileStatement(ifFalse)); } - if (!ifFalseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(ifFalseFlow, ifFalseStmts); - ifFalseFlow.freeScopedLocals(); - this.currentFlow = outerFlow; - outerFlow.inheritMutual(ifTrueFlow, ifFalseFlow); + if (elseFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { + elseStmts.push(module.unreachable()); + } else { + this.performAutoreleases(elseFlow, elseStmts); + } + elseFlow.freeScopedLocals(); + this.currentFlow = flow; + flow.inheritMutual(thenFlow, elseFlow); return module.if(condExpr, - flatten(module, ifTrueStmts, NativeType.None), - flatten(module, ifFalseStmts, NativeType.None) + flatten(module, thenStmts, NativeType.None), + flatten(module, elseStmts, NativeType.None) ); } else { - outerFlow.inheritConditional(ifTrueFlow); - if (ifTrueFlow.is(FlowFlags.TERMINATES)) outerFlow.inheritNonnullIfFalse(condExpr); + flow.inheritBranch(thenFlow); + flow.inheritNonnullIfFalse(condExpr, + thenFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS) + ? null // thenFlow terminates: just inherit + : thenFlow // must become nonnull in thenFlow otherwise + ); return module.if(condExpr, - flatten(module, ifTrueStmts, NativeType.None) + flatten(module, thenStmts, NativeType.None) ); } - // TODO: Detect neglected condition - // if (!foo) { - // foo = [notNull] - // } - // foo // is possibly null } /** Compiles an expression that is about to be returned, taking special care of retaining and setting flow states. */ @@ -2318,7 +2422,7 @@ export class Compiler extends DiagnosticEmitter { } // When inlining, break to the end of the inlined function's block (no need to wrap) - if (flow.is(FlowFlags.INLINE_CONTEXT)) { + if (flow.isInline) { if (!stmts.length) return module.br(assert(flow.inlineReturnLabel), 0, expr); stmts.push(module.br(assert(flow.inlineReturnLabel), 0, expr)); // stmts.push(module.createUnreachable()); @@ -2608,7 +2712,7 @@ export class Compiler extends DiagnosticEmitter { let local: Local; if ( declaration.isAny(CommonFlags.LET | CommonFlags.CONST) || - flow.is(FlowFlags.INLINE_CONTEXT) + flow.isInline ) { // here: not top-level let existingLocal = flow.getScopedLocal(name); if (existingLocal) { @@ -2698,80 +2802,147 @@ export class Compiler extends DiagnosticEmitter { } compileWhileStatement( + /** Statement to compile. */ statement: WhileStatement + ): ExpressionRef { + return this.doCompileWhileStatement(statement, null); + } + + private doCompileWhileStatement( + /** Statement to compile. */ + statement: WhileStatement, + /** If recompiling, the flow with differing local flags that triggered it. */ + flowAfter: Flow | null ): ExpressionRef { var module = this.module; var outerFlow = this.currentFlow; - // Compile condition + // (block $break └►┐ flow + // (loop $continue ├◄───────────┐ recompile? + // (local.set $tcond (condition)) └─┐ condFlow │ + // [autorelease] ┌─┘ │ + // (if (local.get $tcond) ┌◄┤ │ condition? + // (body) │ └─┐ bodyFlow │ + // [autorelease] │ ┌─┘ │ + // ├◄┼►╢ │ breaks or terminates? + // (br $continue) │ └────────────┘ + // ) └─┐ + // ) │ + // ) ┌─┘ + + var label = outerFlow.pushBreakLabel(); + var stmts = new Array(); + var flow = outerFlow.fork(); + if (flowAfter) flow.unifyLocalFlags(flowAfter); + var flowBefore = flow.fork(); + this.currentFlow = flow; + + var breakLabel = "while-break|" + label; + flow.breakLabel = breakLabel; + var continueLabel = "while-continue|" + label; + flow.continueLabel = continueLabel; + + // Precompute the condition + var condFlow = flow.fork(); + this.currentFlow = condFlow; var condExpr = module.precomputeExpression( this.makeIsTrueish( this.compileExpression(statement.condition, Type.bool), this.currentType ) ); + var condKind = evaluateConditionKind(condExpr); - // Simplify if the condition is constant - var alwaysTrue = false; - if (getExpressionId(condExpr) == ExpressionId.Const) { - assert(getExpressionType(condExpr) == NativeType.I32); - if (!getConstValueI32(condExpr)) return module.nop(); // simplify - alwaysTrue = true; + // Shortcut if condition is always false (body never runs) + if (condKind == ConditionKind.FALSE) { + assert(!condFlow.hasScopedLocals); + assert(!flow.hasScopedLocals); + outerFlow.inheritNonnullIfFalse(condExpr); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return module.nop(); } - // Compile body - var label = outerFlow.pushBreakLabel(); - var innerFlow = outerFlow.fork(); - this.currentFlow = innerFlow; - var breakLabel = "break|" + label; - innerFlow.breakLabel = breakLabel; - var continueLabel = "continue|" + label; - innerFlow.continueLabel = continueLabel; - innerFlow.inheritNonnullIfTrue(condExpr); - var stmts = new Array(); - if (statement.statement.kind == NodeKind.BLOCK) { - this.compileStatements((statement.statement).statements, false, stmts); + // From here on condition is either always true or unknown + + // Store condition result in a temp while we autorelease + var tcond = flow.getTempLocal(Type.bool); + stmts.push(module.local_set(tcond.index, condExpr)); + this.performAutoreleases(condFlow, stmts); + condFlow.freeScopedLocals(); + + flow.inherit(condFlow); // always executes + this.currentFlow = flow; + + // Compile the body assuming the condition turned out true + var bodyFlow = flow.fork(); + bodyFlow.inheritNonnullIfTrue(condExpr); + this.currentFlow = bodyFlow; + var bodyStmts = new Array(); + var body = statement.statement; + if (body.kind == NodeKind.BLOCK) { + this.compileStatements((body).statements, false, bodyStmts); } else { - stmts.push(this.compileStatement(statement.statement)); + bodyStmts.push(this.compileStatement(body)); } - var terminates = innerFlow.is(FlowFlags.TERMINATES); - // (block $break ;; (1) skip if skipping (3) + no breaks - // (loop $continue ;; (2) skip if skipping (5) + no continues - // (br_if !cond $break) ;; (3) skip if always true - // (...) ;; (4) - // (br $continue) ;; (5) skip if (4) does not fall through - // ) - // ) - var fallsThrough = !terminates && !innerFlow.is(FlowFlags.BREAKS); + // Check if body terminates + if (bodyFlow.is(FlowFlags.TERMINATES)) { + bodyStmts.push(module.unreachable()); + if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); + else flow.inheritBranch(bodyFlow); + } else { + let breaks = bodyFlow.is(FlowFlags.BREAKS); + if (breaks) { + bodyStmts.push(module.unreachable()); + } else { + this.performAutoreleases(bodyFlow, bodyStmts); + bodyStmts.push(module.br(continueLabel)); + } + if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); + else flow.inheritBranch(bodyFlow); - if (fallsThrough) { // (5) - this.performAutoreleases(innerFlow, stmts); - stmts.push(module.br(continueLabel)); - } - if (!alwaysTrue) { // (3) - stmts.unshift(module.br(breakLabel, module.unary(UnaryOp.EqzI32, condExpr))); - } - var expr = flatten(module, stmts, NativeType.None); - if (fallsThrough || innerFlow.isAny(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES)) { // (2) - expr = module.loop(continueLabel, expr); - } - if (!alwaysTrue || innerFlow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { // (1) - expr = module.block(breakLabel, [ expr ]); + // Detect if local flags are incompatible before and after looping, and + // if so recompile by unifying local flags between iterations. + // Here: Only relevant if flow does not always break. + if (!breaks && Flow.hasIncompatibleLocalStates(flowBefore, flow)) { + assert(!flowAfter); // should work on the first attempt + flow.freeTempLocal(tcond); + outerFlow.popBreakLabel(); + this.currentFlow = outerFlow; + return this.doCompileWhileStatement(statement, flow); + } } + stmts.push( + module.if(module.local_get(tcond.index, NativeType.I32), + module.block(null, bodyStmts) + ) + ); + flow.freeTempLocal(tcond); + this.currentFlow = flow; - // Switch back to the parent flow - innerFlow.freeScopedLocals(); - outerFlow.popBreakLabel(); - innerFlow.unset( + // Finalize + assert(!flow.hasScopedLocals); + if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { + flow.unset(FlowFlags.TERMINATES); + } + flow.unset( FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS | FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES ); - if (alwaysTrue) outerFlow.inherit(innerFlow); - else outerFlow.inheritConditional(innerFlow); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); this.currentFlow = outerFlow; + var expr = module.block(breakLabel, [ + module.loop(continueLabel, + module.block(null, stmts) + ) + ]); + if (condKind == ConditionKind.TRUE && flow.is(FlowFlags.TERMINATES)) { + expr = module.block(null, [ expr, module.unreachable() ]); + } return expr; } @@ -5572,7 +5743,7 @@ export class Compiler extends DiagnosticEmitter { if (!valueType.is(TypeFlags.NULLABLE) || flow.isNonnull(valueExpr, type)) flow.setLocalFlag(localIndex, LocalFlags.NONNULL); else flow.unsetLocalFlag(localIndex, LocalFlags.NONNULL); } - flow.setLocalFlag(localIndex, LocalFlags.WRITTENTO); + flow.setLocalFlag(localIndex, LocalFlags.INITIALIZED); if (type.isManaged) { let alreadyRetained = this.skippedAutoreleases.has(valueExpr); @@ -6678,7 +6849,7 @@ export class Compiler extends DiagnosticEmitter { // Differs from `performAutoreleases` in that concluding this flow also // concludes all its parent flows, for example on a `return`. var module = this.module; - if (flow.is(FlowFlags.INLINE_CONTEXT)) { + if (flow.isInline) { // Traverse to the top-most flow containing the inlined function's // locals as scoped locals and release these instead of all the locals. let parent: Flow | null; @@ -7242,7 +7413,7 @@ export class Compiler extends DiagnosticEmitter { ); } } - if (flow.is(FlowFlags.INLINE_CONTEXT)) { + if (flow.isInline) { let scopedThis = flow.lookupLocal(CommonSymbols.this_); if (scopedThis) { let scopedThisClass = assert(scopedThis.type.classReference); @@ -8080,15 +8251,15 @@ export class Compiler extends DiagnosticEmitter { let thisExpression = assert(this.resolver.currentThisExpression); let thisExpr = this.compileExpression(thisExpression, this.options.usizeType); // FIXME - // let thisType = this.currentType; - // if (thisType.is(TypeFlags.NULLABLE)) { - // if (!flow.isNonnull(thisExpr, thisType)) { - // this.error( - // DiagnosticCode.Object_is_possibly_null, - // thisExpression.range - // ); - // } - // } + let thisType = this.currentType; + if (thisType.is(TypeFlags.NULLABLE)) { + if (!flow.isNonnull(thisExpr, thisType)) { + this.error( + DiagnosticCode.Object_is_possibly_null, + thisExpression.range + ); + } + } this.currentType = (target).type; return module.load( (target).type.byteSize, @@ -9189,7 +9360,7 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var flow = this.currentFlow; - var isInline = flow.is(FlowFlags.INLINE_CONTEXT); + var isInline = flow.isInline; var thisLocalIndex = isInline ? assert(flow.lookupLocal(CommonSymbols.this_)).index : 0; @@ -9357,3 +9528,14 @@ export function flatten(module: Module, stmts: ExpressionRef[], type: NativeType } return module.block(null, stmts, type); } + +/** Evaluates the kind of a condition from its expression. */ +function evaluateConditionKind(expr: ExpressionRef): ConditionKind { + if (getExpressionId(expr) == ExpressionId.Const) { + assert(getExpressionType(expr) == NativeType.I32); + return getConstValueI32(expr) + ? ConditionKind.TRUE + : ConditionKind.FALSE; + } + return ConditionKind.UNKNOWN; +} diff --git a/src/flow.ts b/src/flow.ts index 5af5fbc188..4f21171017 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -75,24 +75,24 @@ export const enum FlowFlags { // categorical - /** This flow returns. */ + /** This flow always returns. */ RETURNS = 1 << 0, - /** This flow returns a wrapped value. */ + /** This flow always returns a wrapped value. */ RETURNS_WRAPPED = 1 << 1, - /** This flow returns a non-null value. */ + /** This flow always returns a non-null value. */ RETURNS_NONNULL = 1 << 2, - /** This flow throws. */ + /** This flow always throws. */ THROWS = 1 << 3, - /** This flow breaks. */ + /** This flow always breaks. */ BREAKS = 1 << 4, - /** This flow continues. */ + /** This flow always continues. */ CONTINUES = 1 << 5, - /** This flow allocates. Constructors only. */ + /** This flow always allocates. Constructors only. */ ALLOCATES = 1 << 6, - /** This flow calls super. Constructors only. */ + /** This flow always calls super. Constructors only. */ CALLS_SUPER = 1 << 7, - /** This flow terminates (returns, throws or continues). */ - TERMINATES = 1 << 8, + /** This flow always terminates (returns, throws or continues). */ + TERMINATES = 1 << 8, // Note that this doesn't cover BREAKS, which is separate // conditional @@ -100,21 +100,17 @@ export const enum FlowFlags { CONDITIONALLY_RETURNS = 1 << 9, /** This flow conditionally throws in a child flow. */ CONDITIONALLY_THROWS = 1 << 10, - /** This flow conditionally terminates in a child flow. */ - CONDITIONALLY_TERMINATES = 1 << 11, /** This flow conditionally breaks in a child flow. */ - CONDITIONALLY_BREAKS = 1 << 12, + CONDITIONALLY_BREAKS = 1 << 11, /** This flow conditionally continues in a child flow. */ - CONDITIONALLY_CONTINUES = 1 << 13, + CONDITIONALLY_CONTINUES = 1 << 12, /** This flow conditionally allocates in a child flow. Constructors only. */ - CONDITIONALLY_ALLOCATES = 1 << 14, + CONDITIONALLY_ALLOCATES = 1 << 13, - // special + // other - /** This is an inlining flow. */ - INLINE_CONTEXT = 1 << 15, /** This is a flow with explicitly disabled bounds checking. */ - UNCHECKED_CONTEXT = 1 << 16, + UNCHECKED_CONTEXT = 1 << 15, // masks @@ -144,80 +140,31 @@ export enum LocalFlags { /** Local is constant. */ CONSTANT = 1 << 0, - /** Local is a function parameter. */ - PARAMETER = 1 << 1, /** Local is properly wrapped. Relevant for small integers. */ - WRAPPED = 1 << 2, + WRAPPED = 1 << 1, /** Local is non-null. */ - NONNULL = 1 << 3, - /** Local is read from. */ - READFROM = 1 << 4, - /** Local is written to. */ - WRITTENTO = 1 << 5, + NONNULL = 1 << 2, + /** Local is initialized. */ + INITIALIZED = 1 << 3, /** Local is retained. */ - RETAINED = 1 << 6, + RETAINED = 1 << 4, - /** Local is conditionally read from. */ - CONDITIONALLY_READFROM = 1 << 7, - /** Local is conditionally written to. */ - CONDITIONALLY_WRITTENTO = 1 << 8, /** Local must be conditionally retained. */ - CONDITIONALLY_RETAINED = 1 << 9, - /** Local is conditionally returned. */ - CONDITIONALLY_RETURNED = 1 << 10, - - /** Any categorical flag. */ - ANY_CATEGORICAL = CONSTANT - | PARAMETER - | WRAPPED - | NONNULL - | READFROM - | WRITTENTO - | RETAINED, - - /** Any conditional flag. */ - ANY_CONDITIONAL = RETAINED - | CONDITIONALLY_READFROM - | CONDITIONALLY_WRITTENTO - | CONDITIONALLY_RETAINED - | CONDITIONALLY_RETURNED, - - /** Any written to flag. */ - ANY_WRITTENTO = WRITTENTO - | CONDITIONALLY_WRITTENTO, + CONDITIONALLY_RETAINED = 1 << 5, /** Any retained flag. */ ANY_RETAINED = RETAINED | CONDITIONALLY_RETAINED } -export namespace LocalFlags { - export function join(left: LocalFlags, right: LocalFlags): LocalFlags { - return ((left & LocalFlags.ANY_CATEGORICAL) & (right & LocalFlags.ANY_CATEGORICAL)) - | (left & LocalFlags.ANY_CONDITIONAL) | (right & LocalFlags.ANY_CONDITIONAL); - } -} - -/** Flags indicating the current state of a field. */ -export enum FieldFlags { - /** No specific conditions. */ - NONE = 0, - - /** Field is initialized. Relevant in constructors. */ - INITIALIZED = 1 << 0, - /** Field is conditionally initialized. Relevant in constructors. */ - CONDITIONALLY_INITIALIZED = 1 << 1, - /** Any categorical flag. */ - ANY_CATEGORICAL = INITIALIZED, - - /** Any conditional flag. */ - ANY_CONDITIONAL = CONDITIONALLY_INITIALIZED -} -export namespace FieldFlags { - export function join(left: FieldFlags, right: FieldFlags): FieldFlags { - return ((left & FieldFlags.ANY_CATEGORICAL) & (right & FieldFlags.ANY_CATEGORICAL)) - | (left & FieldFlags.ANY_CONDITIONAL) | (right & FieldFlags.ANY_CONDITIONAL); - } +/** Condition kinds. */ +export const enum ConditionKind { + /** Outcome of the condition is unknown */ + UNKNOWN, + /** Condition is always true. */ + TRUE, + /** Condition is always false. */ + FALSE } /** A control flow evaluator. */ @@ -241,8 +188,6 @@ export class Flow { scopedLocals: Map | null = null; /** Local flags. */ localFlags: LocalFlags[]; - /** Field flags. Relevant in constructors. */ - fieldFlags: Map | null = null; /** Function being inlined, when inlining. */ inlineFunction: Function | null; /** The label we break to when encountering a return statement, when inlining. */ @@ -267,7 +212,6 @@ export class Flow { /** Creates an inline flow within `parentFunction`. */ static createInline(parentFunction: Function, inlineFunction: Function): Flow { var flow = Flow.create(parentFunction); - flow.set(FlowFlags.INLINE_CONTEXT); flow.inlineFunction = inlineFunction; flow.inlineReturnLabel = inlineFunction.internalName + "|inlined." + (inlineFunction.nextInlineId++).toString(10); flow.returnType = inlineFunction.signature.returnType; @@ -277,6 +221,11 @@ export class Flow { private constructor() { } + /** Tests if this is an inline flow. */ + get isInline(): bool { + return this.inlineFunction !== null; + } + /** Gets the actual function being compiled, The inlined function when inlining, otherwise the parent function. */ get actualFunction(): Function { return this.inlineFunction || this.parentFunction; @@ -547,72 +496,239 @@ export class Flow { } } - /** Inherits flags and local wrap states from the specified flow (e.g. blocks). */ + /** Inherits flags of another flow into this one, i.e. a finished inner block. */ inherit(other: Flow): void { - this.flags |= other.flags & (FlowFlags.ANY_CATEGORICAL | FlowFlags.ANY_CONDITIONAL); - this.localFlags = other.localFlags; // no need to slice because other flow is finished + assert(other.parentFunction == this.parentFunction); + assert(other.parent == this); // currently the case, but might change + this.flags = other.flags; + this.localFlags = other.localFlags; } - /** Inherits categorical flags as conditional flags from the specified flow (e.g. then without else). */ - inheritConditional(other: Flow): void { - this.set(other.flags & FlowFlags.ANY_CONDITIONAL); - if (other.is(FlowFlags.RETURNS)) { - this.set(FlowFlags.CONDITIONALLY_RETURNS); + /** Inherits flags of a conditional branch joining again with this one, i.e. then without else. */ + inheritBranch(other: Flow, conditionKind: ConditionKind = ConditionKind.UNKNOWN): void { + assert(other.parentFunction == this.parentFunction); + switch (conditionKind) { + case ConditionKind.TRUE: this.inherit(other); // always executes + case ConditionKind.FALSE: return; // never executes } - if (other.is(FlowFlags.THROWS)) { - this.set(FlowFlags.CONDITIONALLY_THROWS); + + // Note that flags in `this` flow have already happened. For instance, + // a return cannot be undone no matter what'd happen in subsequent branches, + // but an allocation, which doesn't terminate, can become conditional. Not + // all flags have a corresponding conditional flag that's tracked. + + var thisFlags = this.flags; + var otherFlags = other.flags; + var newFlags = FlowFlags.NONE; + + if (thisFlags & FlowFlags.RETURNS) { // nothing can change that + newFlags |= FlowFlags.RETURNS; + } else if (otherFlags & FlowFlags.RETURNS) { + newFlags |= FlowFlags.CONDITIONALLY_RETURNS; + } else { + newFlags |= (thisFlags | otherFlags) & FlowFlags.CONDITIONALLY_RETURNS; } - if (other.is(FlowFlags.BREAKS) && other.breakLabel == this.breakLabel) { - this.set(FlowFlags.CONDITIONALLY_BREAKS); + + // must be the case in both + newFlags |= thisFlags & otherFlags & FlowFlags.RETURNS_WRAPPED; + newFlags |= thisFlags & otherFlags & FlowFlags.RETURNS_NONNULL; + + if (thisFlags & FlowFlags.THROWS) { // nothing can change that + newFlags |= FlowFlags.THROWS; + } else if (otherFlags & FlowFlags.THROWS) { + newFlags |= FlowFlags.CONDITIONALLY_THROWS; + } else { + newFlags |= (thisFlags | otherFlags) & FlowFlags.CONDITIONALLY_THROWS; } - if (other.is(FlowFlags.CONTINUES) && other.continueLabel == this.continueLabel) { - this.set(FlowFlags.CONDITIONALLY_CONTINUES); + + if (thisFlags & FlowFlags.BREAKS) { // nothing can change that + newFlags |= FlowFlags.BREAKS; + } else if (other.breakLabel == this.breakLabel) { + if (otherFlags & FlowFlags.BREAKS) { + newFlags |= FlowFlags.CONDITIONALLY_BREAKS; + } else { + newFlags |= (thisFlags | otherFlags) & FlowFlags.CONDITIONALLY_BREAKS; + } + } else { + newFlags |= thisFlags & FlowFlags.CONDITIONALLY_BREAKS; } - if (other.is(FlowFlags.ALLOCATES)) { - this.set(FlowFlags.CONDITIONALLY_ALLOCATES); + + if (thisFlags & FlowFlags.CONTINUES) { // nothing can change that + newFlags |= FlowFlags.CONTINUES; + } else if (other.continueLabel === this.continueLabel) { + if (otherFlags & FlowFlags.CONTINUES) { + newFlags |= FlowFlags.CONDITIONALLY_CONTINUES; + } else { + newFlags |= (thisFlags | otherFlags) & FlowFlags.CONDITIONALLY_CONTINUES; + } + } else { + newFlags |= thisFlags & FlowFlags.CONDITIONALLY_CONTINUES; } - var localFlags = other.localFlags; - for (let i = 0, k = localFlags.length; i < k; ++i) { - let flags = localFlags[i]; - this.setLocalFlag(i, flags & LocalFlags.ANY_CONDITIONAL); - if (flags & LocalFlags.RETAINED) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_RETAINED); - if (flags & LocalFlags.READFROM) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_READFROM); - if (flags & LocalFlags.WRITTENTO) this.setLocalFlag(i, LocalFlags.CONDITIONALLY_WRITTENTO); + + if (thisFlags & FlowFlags.ALLOCATES) { // can become conditional + if (otherFlags & FlowFlags.ALLOCATES) { + newFlags |= FlowFlags.ALLOCATES; + } else { + newFlags |= FlowFlags.CONDITIONALLY_ALLOCATES; + } + } else if (otherFlags & FlowFlags.ALLOCATES) { + newFlags |= FlowFlags.CONDITIONALLY_ALLOCATES; + } + + // must be the case in both + newFlags |= thisFlags & otherFlags & FlowFlags.CALLS_SUPER; + + if (thisFlags & FlowFlags.TERMINATES) { // nothing can change that + newFlags |= FlowFlags.TERMINATES; + } + + this.flags = newFlags | (thisFlags & FlowFlags.UNCHECKED_CONTEXT); + + var thisLocalFlags = this.localFlags; + var numThisLocalFlags = thisLocalFlags.length; + var otherLocalFlags = other.localFlags; + var numOtherLocalFlags = otherLocalFlags.length; + var maxLocalFlags = max(numThisLocalFlags, numOtherLocalFlags); + for (let i = 0; i < maxLocalFlags; ++i) { + let thisFlags = i < numThisLocalFlags ? thisLocalFlags[i] : 0; + let otherFlags = i < numOtherLocalFlags ? otherLocalFlags[i] : 0; + let newFlags = thisFlags & otherFlags & ( + LocalFlags.CONSTANT | + LocalFlags.WRAPPED | + LocalFlags.NONNULL | + LocalFlags.INITIALIZED + ); + if (thisFlags & LocalFlags.RETAINED) { + if (otherFlags & LocalFlags.RETAINED) { + newFlags |= LocalFlags.RETAINED; + } else { + newFlags |= LocalFlags.CONDITIONALLY_RETAINED; + } + } else if (otherFlags & LocalFlags.RETAINED) { + newFlags |= LocalFlags.CONDITIONALLY_RETAINED; + } else { + newFlags |= (thisFlags | otherFlags) & LocalFlags.CONDITIONALLY_RETAINED; + } + thisLocalFlags[i] = newFlags; } } - /** Inherits mutual flags and local wrap states from the specified flows (e.g. then with else). */ + /** Inherits mutual flags of two alternate branches becoming this one, i.e. then with else. */ inheritMutual(left: Flow, right: Flow): void { - // categorical flags set in both arms - this.set(left.flags & right.flags & FlowFlags.ANY_CATEGORICAL); + assert(left.parentFunction == right.parentFunction); + assert(left.parentFunction == this.parentFunction); + // This differs from the previous method in that no flags are guaranteed + // to happen unless it is the case in both flows. + + var leftFlags = left.flags; + var rightFlags = right.flags; + var newFlags = FlowFlags.NONE; + + if (leftFlags & FlowFlags.RETURNS) { + if (rightFlags & FlowFlags.RETURNS) { + newFlags |= FlowFlags.RETURNS; + } else { + newFlags |= FlowFlags.CONDITIONALLY_RETURNS; + } + } else if (rightFlags & FlowFlags.RETURNS) { + newFlags |= FlowFlags.CONDITIONALLY_RETURNS; + } else { + newFlags |= (leftFlags | rightFlags) & FlowFlags.CONDITIONALLY_RETURNS; + } + + if ((leftFlags & FlowFlags.RETURNS_WRAPPED) && (rightFlags & FlowFlags.RETURNS_WRAPPED)) { + newFlags |= FlowFlags.RETURNS_WRAPPED; + } + + if ((leftFlags & FlowFlags.RETURNS_NONNULL) && (rightFlags & FlowFlags.RETURNS_NONNULL)) { + newFlags |= FlowFlags.RETURNS_NONNULL; + } + + if (leftFlags & FlowFlags.THROWS) { + if (rightFlags & FlowFlags.THROWS) { + newFlags |= FlowFlags.THROWS; + } else { + newFlags |= FlowFlags.CONDITIONALLY_THROWS; + } + } else if (rightFlags & FlowFlags.THROWS) { + newFlags |= FlowFlags.CONDITIONALLY_THROWS; + } else { + newFlags |= (leftFlags | rightFlags) & FlowFlags.CONDITIONALLY_THROWS; + } + + if (leftFlags & FlowFlags.BREAKS) { + if (rightFlags & FlowFlags.BREAKS) { + newFlags |= FlowFlags.BREAKS; + } else { + newFlags |= FlowFlags.CONDITIONALLY_BREAKS; + } + } else if (rightFlags & FlowFlags.BREAKS) { + newFlags |= FlowFlags.CONDITIONALLY_BREAKS; + } else { + newFlags |= (leftFlags | rightFlags) & FlowFlags.CONDITIONALLY_BREAKS; + } + + if (leftFlags & FlowFlags.CONTINUES) { + if (rightFlags & FlowFlags.CONTINUES) { + newFlags |= FlowFlags.CONTINUES; + } else { + newFlags |= FlowFlags.CONDITIONALLY_CONTINUES; + } + } else if (rightFlags & FlowFlags.CONTINUES) { + newFlags |= FlowFlags.CONDITIONALLY_CONTINUES; + } else { + newFlags |= (leftFlags | rightFlags) & FlowFlags.CONDITIONALLY_CONTINUES; + } - // conditional flags set in any arm - this.set(left.flags & FlowFlags.ANY_CONDITIONAL); - this.set(right.flags & FlowFlags.ANY_CONDITIONAL); + if (leftFlags & FlowFlags.ALLOCATES) { + if (rightFlags & FlowFlags.ALLOCATES) { + newFlags |= FlowFlags.ALLOCATES; + } else { + newFlags |= FlowFlags.CONDITIONALLY_ALLOCATES; + } + } else if (rightFlags & FlowFlags.ALLOCATES) { + newFlags |= FlowFlags.CONDITIONALLY_ALLOCATES; + } else { + newFlags |= (leftFlags | rightFlags) & FlowFlags.CONDITIONALLY_ALLOCATES; + } - // categorical flags in either arm as conditional - this.inheritConditional(left); - this.inheritConditional(right); + if ((leftFlags & FlowFlags.CALLS_SUPER) && (rightFlags & FlowFlags.CALLS_SUPER)) { + newFlags |= FlowFlags.CALLS_SUPER; + } + + if ((leftFlags & FlowFlags.TERMINATES) && (rightFlags & FlowFlags.TERMINATES)) { + newFlags |= FlowFlags.TERMINATES; + } + + this.flags = newFlags | (this.flags & FlowFlags.UNCHECKED_CONTEXT); - // categorical local flags set in both arms / conditional local flags set in at least one arm var leftLocalFlags = left.localFlags; var numLeftLocalFlags = leftLocalFlags.length; var rightLocalFlags = right.localFlags; var numRightLocalFlags = rightLocalFlags.length; - var combinedFlags = new Array(max(numLeftLocalFlags, numRightLocalFlags)); - for (let i = 0; i < numLeftLocalFlags; ++i) { - combinedFlags[i] = LocalFlags.join( - unchecked(leftLocalFlags[i]), - i < numRightLocalFlags - ? unchecked(rightLocalFlags[i]) - : 0 - ); - } - for (let i = numLeftLocalFlags; i < numRightLocalFlags; ++i) { - combinedFlags[i] = LocalFlags.join( - 0, - unchecked(rightLocalFlags[i]) + var maxLocalFlags = max(numLeftLocalFlags, numRightLocalFlags); + var combinedFlags = new Array(maxLocalFlags); + for (let i = 0; i < maxLocalFlags; ++i) { + let leftFlags = i < numLeftLocalFlags ? leftLocalFlags[i] : 0; + let rightFlags = i < numRightLocalFlags ? rightLocalFlags[i] : 0; + let newFlags = leftFlags & rightFlags & ( + LocalFlags.CONSTANT | + LocalFlags.WRAPPED | + LocalFlags.NONNULL | + LocalFlags.INITIALIZED ); + if (leftFlags & LocalFlags.RETAINED) { + if (rightFlags & LocalFlags.RETAINED) { + newFlags |= LocalFlags.RETAINED; + } else { + newFlags |= LocalFlags.CONDITIONALLY_RETAINED; + } + } else if (rightFlags & LocalFlags.RETAINED) { + newFlags |= LocalFlags.CONDITIONALLY_RETAINED; + } else { + newFlags |= (leftFlags | rightFlags) & LocalFlags.CONDITIONALLY_RETAINED; + } + combinedFlags[i] = newFlags; } this.localFlags = combinedFlags; } @@ -682,19 +798,37 @@ export class Flow { } /** Updates local states to reflect that this branch is only taken when `expr` is true-ish. */ - inheritNonnullIfTrue(expr: ExpressionRef): void { + inheritNonnullIfTrue( + /** Expression being true. */ + expr: ExpressionRef, + /** If specified, only set the flag if also nonnull in this flow. */ + iff: Flow | null = null + ): void { // A: `expr` is true-ish -> Q: how did that happen? + + // The iff argument is useful in situations like + // + // if (!ref) { + // ref = new Ref(); + // } + // // inheritNonnullIfFalse(`!ref`, thenFlow) -> ref != null + // + switch (getExpressionId(expr)) { case ExpressionId.LocalSet: { if (!isLocalTee(expr)) break; let local = this.parentFunction.localsByIndex[getLocalSetIndex(expr)]; - this.setLocalFlag(local.index, LocalFlags.NONNULL); - this.inheritNonnullIfTrue(getLocalSetValue(expr)); // must have been true-ish as well + if (!iff || iff.isLocalFlag(local.index, LocalFlags.NONNULL)) { + this.setLocalFlag(local.index, LocalFlags.NONNULL); + } + this.inheritNonnullIfTrue(getLocalSetValue(expr), iff); // must have been true-ish as well break; } case ExpressionId.LocalGet: { let local = this.parentFunction.localsByIndex[getLocalGetIndex(expr)]; - this.setLocalFlag(local.index, LocalFlags.NONNULL); + if (!iff || iff.isLocalFlag(local.index, LocalFlags.NONNULL)) { + this.setLocalFlag(local.index, LocalFlags.NONNULL); + } break; } case ExpressionId.If: { @@ -707,8 +841,8 @@ export class Flow { (getExpressionType(ifFalse) == NativeType.I32 && getConstValueI32(ifFalse) == 0) || (getExpressionType(ifFalse) == NativeType.I64 && getConstValueI64Low(ifFalse) == 0 && getConstValueI64High(ifFalse) == 0) ) { - this.inheritNonnullIfTrue(getIfCondition(expr)); - this.inheritNonnullIfTrue(getIfTrue(expr)); + this.inheritNonnullIfTrue(getIfCondition(expr), iff); + this.inheritNonnullIfTrue(getIfTrue(expr), iff); } } break; @@ -717,7 +851,7 @@ export class Flow { switch (getUnaryOp(expr)) { case UnaryOp.EqzI32: case UnaryOp.EqzI64: { - this.inheritNonnullIfFalse(getUnaryValue(expr)); // !value -> value must have been false + this.inheritNonnullIfFalse(getUnaryValue(expr), iff); // !value -> value must have been false break; } } @@ -729,9 +863,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) { - this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // TRUE == right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) { - this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left == TRUE -> left must have been true } break; } @@ -739,9 +873,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) { - this.inheritNonnullIfTrue(right); // TRUE == right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // TRUE == right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 && getConstValueI64High(right) != 0)) { - this.inheritNonnullIfTrue(left); // left == TRUE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left == TRUE -> left must have been true } break; } @@ -749,9 +883,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) { - this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // FALSE != right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) { - this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left != FALSE -> left must have been true } break; } @@ -759,9 +893,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) { - this.inheritNonnullIfTrue(right); // FALSE != right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // FALSE != right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) { - this.inheritNonnullIfTrue(left); // left != FALSE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left != FALSE -> left must have been true } break; } @@ -773,7 +907,7 @@ export class Flow { let program = this.parentFunction.program; switch (name) { case program.retainInstance.internalName: { - this.inheritNonnullIfTrue(getCallOperand(expr, 0)); + this.inheritNonnullIfTrue(getCallOperand(expr, 0), iff); break; } } @@ -783,14 +917,19 @@ export class Flow { } /** Updates local states to reflect that this branch is only taken when `expr` is false-ish. */ - inheritNonnullIfFalse(expr: ExpressionRef): void { + inheritNonnullIfFalse( + /** Expression being false. */ + expr: ExpressionRef, + /** If specified, only set the flag if also nonnull in this flow. */ + iff: Flow | null = null + ): void { // A: `expr` is false-ish -> Q: how did that happen? switch (getExpressionId(expr)) { case ExpressionId.Unary: { switch (getUnaryOp(expr)) { case UnaryOp.EqzI32: case UnaryOp.EqzI64: { - this.inheritNonnullIfTrue(getUnaryValue(expr)); // !value -> value must have been true + this.inheritNonnullIfTrue(getUnaryValue(expr), iff); // !value -> value must have been true break; } } @@ -808,8 +947,8 @@ export class Flow { (exprType == NativeType.I32 && getConstValueI32(ifTrue) != 0) || (exprType == NativeType.I64 && (getConstValueI64Low(ifTrue) != 0 || getConstValueI64High(ifTrue) != 0)) ) { - this.inheritNonnullIfFalse(getIfCondition(expr)); - this.inheritNonnullIfFalse(getIfFalse(expr)); + this.inheritNonnullIfFalse(getIfCondition(expr), iff); + this.inheritNonnullIfFalse(getIfFalse(expr), iff); } } @@ -822,9 +961,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) == 0) { - this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // FALSE == right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) == 0) { - this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left == FALSE -> left must have been true } break; } @@ -832,9 +971,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI64Low(left) == 0 && getConstValueI64High(left) == 0) { - this.inheritNonnullIfTrue(right); // FALSE == right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // FALSE == right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI64Low(right) == 0 && getConstValueI64High(right) == 0) { - this.inheritNonnullIfTrue(left); // left == FALSE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left == FALSE -> left must have been true } break; } @@ -842,9 +981,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && getConstValueI32(left) != 0) { - this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true + this.inheritNonnullIfTrue(right, iff); // TRUE != right -> right must have been true } else if (getExpressionId(right) == ExpressionId.Const && getConstValueI32(right) != 0) { - this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true + this.inheritNonnullIfTrue(left, iff); // left != TRUE -> left must have been true } break; } @@ -852,9 +991,9 @@ export class Flow { let left = getBinaryLeft(expr); let right = getBinaryRight(expr); if (getExpressionId(left) == ExpressionId.Const && (getConstValueI64Low(left) != 0 || getConstValueI64High(left) != 0)) { - this.inheritNonnullIfTrue(right); // TRUE != right -> right must have been true for this to become false + this.inheritNonnullIfTrue(right, iff); // TRUE != right -> right must have been true for this to become false } else if (getExpressionId(right) == ExpressionId.Const && (getConstValueI64Low(right) != 0 || getConstValueI64High(right) != 0)) { - this.inheritNonnullIfTrue(left); // left != TRUE -> left must have been true for this to become false + this.inheritNonnullIfTrue(left, iff); // left != TRUE -> left must have been true for this to become false } break; } diff --git a/src/resolver.ts b/src/resolver.ts index 986ef15579..2fa05ee9d9 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -2043,7 +2043,7 @@ export class Resolver extends DiagnosticEmitter { /** How to proceed with eventual diagnostics. */ reportMode: ReportMode = ReportMode.REPORT ): Element | null { - if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) { + if (ctxFlow.isInline) { let thisLocal = ctxFlow.lookupLocal(CommonSymbols.this_); if (thisLocal) { this.currentThisExpression = null; @@ -2102,7 +2102,7 @@ export class Resolver extends DiagnosticEmitter { /** How to proceed with eventual diagnostics. */ reportMode: ReportMode = ReportMode.REPORT ): Element | null { - if (ctxFlow.is(FlowFlags.INLINE_CONTEXT)) { + if (ctxFlow.isInline) { let superLocal = ctxFlow.lookupLocal(CommonSymbols.super_); if (superLocal) { this.currentThisExpression = null; From 62d448bc3e179b8b36362848035125878f964ea7 Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 7 Jan 2020 14:06:29 +0100 Subject: [PATCH 05/19] update fixtures --- tests/compiler/assert-nonnull.untouched.wat | 8 + tests/compiler/assert.untouched.wat | 9 + tests/compiler/binary.optimized.wat | 8 +- tests/compiler/binary.untouched.wat | 52 +- tests/compiler/builtins.optimized.wat | 42 +- tests/compiler/builtins.untouched.wat | 52 +- tests/compiler/call-super.untouched.wat | 2 + tests/compiler/comma.untouched.wat | 2 + tests/compiler/constructor.untouched.wat | 2 + tests/compiler/continue.untouched.wat | 3 + tests/compiler/do.optimized.wat | 16 +- tests/compiler/do.untouched.wat | 24 +- tests/compiler/exports.untouched.wat | 2 + .../extends-baseaggregate.optimized.wat | 32 +- .../extends-baseaggregate.untouched.wat | 442 +- tests/compiler/features/simd.untouched.wat | 6 + tests/compiler/features/threads.untouched.wat | 2 + tests/compiler/for.untouched.wat | 56 +- tests/compiler/getter-call.untouched.wat | 2 + tests/compiler/infer-array.optimized.wat | 24 +- tests/compiler/infer-array.untouched.wat | 237 +- tests/compiler/infer-generic.untouched.wat | 2 + tests/compiler/infer-type.untouched.wat | 3 + tests/compiler/inlining.untouched.wat | 2 + tests/compiler/instanceof.untouched.wat | 8 + tests/compiler/loop-flow.optimized.wat | 12 +- tests/compiler/loop-flow.untouched.wat | 114 +- tests/compiler/loop-wrap.optimized.wat | 28 +- tests/compiler/loop-wrap.untouched.wat | 49 +- tests/compiler/mandelbrot.optimized.wat | 80 +- tests/compiler/mandelbrot.untouched.wat | 118 +- tests/compiler/memcpy.optimized.wat | 20 +- tests/compiler/memcpy.untouched.wat | 104 +- tests/compiler/memmove.optimized.wat | 88 +- tests/compiler/memmove.untouched.wat | 115 +- tests/compiler/memset.optimized.wat | 4 +- tests/compiler/memset.untouched.wat | 18 +- tests/compiler/new.untouched.wat | 2 + tests/compiler/number.optimized.wat | 232 +- tests/compiler/number.untouched.wat | 804 +-- .../optional-typeparameters.untouched.wat | 2 + tests/compiler/possibly-null.optimized.wat | 12 +- tests/compiler/possibly-null.untouched.wat | 136 +- tests/compiler/rc/global-init.optimized.wat | 24 +- tests/compiler/rc/global-init.untouched.wat | 364 +- tests/compiler/rc/local-init.optimized.wat | 24 +- tests/compiler/rc/local-init.untouched.wat | 364 +- .../rc/logical-and-mismatch.optimized.wat | 24 +- .../rc/logical-and-mismatch.untouched.wat | 364 +- .../rc/logical-or-mismatch.optimized.wat | 24 +- .../rc/logical-or-mismatch.untouched.wat | 364 +- tests/compiler/rc/optimize.optimized.wat | 50 +- tests/compiler/rc/optimize.untouched.wat | 420 +- tests/compiler/rc/rereturn.optimized.wat | 24 +- tests/compiler/rc/rereturn.untouched.wat | 364 +- .../rc/ternary-mismatch.optimized.wat | 24 +- .../rc/ternary-mismatch.untouched.wat | 364 +- tests/compiler/resolve-access.optimized.wat | 32 +- tests/compiler/resolve-access.untouched.wat | 387 +- tests/compiler/resolve-binary.optimized.wat | 234 +- tests/compiler/resolve-binary.untouched.wat | 806 +-- .../resolve-elementaccess.optimized.wat | 234 +- .../resolve-elementaccess.untouched.wat | 816 +-- .../resolve-function-expression.optimized.wat | 46 +- .../resolve-function-expression.untouched.wat | 128 +- tests/compiler/resolve-new.untouched.wat | 2 + .../resolve-propertyaccess.optimized.wat | 46 +- .../resolve-propertyaccess.untouched.wat | 128 +- tests/compiler/resolve-ternary.optimized.wat | 232 +- tests/compiler/resolve-ternary.untouched.wat | 952 +-- tests/compiler/resolve-unary.optimized.wat | 46 +- tests/compiler/resolve-unary.untouched.wat | 128 +- tests/compiler/retain-i32.untouched.wat | 3 + .../retain-release-sanity.optimized.wat | 145 +- .../retain-release-sanity.untouched.wat | 514 +- tests/compiler/retain-release.untouched.wat | 221 +- tests/compiler/retain-return.optimized.wat | 24 +- tests/compiler/retain-return.untouched.wat | 364 +- tests/compiler/rt/instanceof.optimized.wat | 4 +- tests/compiler/rt/instanceof.untouched.wat | 9 +- tests/compiler/rt/stub-realloc.optimized.wat | 24 +- tests/compiler/rt/stub-realloc.untouched.wat | 229 +- tests/compiler/runtime-full.optimized.wat | 24 +- tests/compiler/runtime-full.untouched.wat | 364 +- tests/compiler/runtime-stub.untouched.wat | 2 + tests/compiler/scoped.untouched.wat | 13 +- tests/compiler/std/array-access.optimized.wat | 42 +- tests/compiler/std/array-access.untouched.wat | 66 +- .../compiler/std/array-literal.optimized.wat | 28 +- .../compiler/std/array-literal.untouched.wat | 426 +- tests/compiler/std/array.optimized.wat | 587 +- tests/compiler/std/array.untouched.wat | 4025 +++++++------ tests/compiler/std/arraybuffer.optimized.wat | 28 +- tests/compiler/std/arraybuffer.untouched.wat | 557 +- tests/compiler/std/dataview.optimized.wat | 24 +- tests/compiler/std/dataview.untouched.wat | 420 +- tests/compiler/std/date.untouched.wat | 2 + tests/compiler/std/hash.untouched.wat | 121 + tests/compiler/std/libm.untouched.wat | 32 + tests/compiler/std/map.optimized.wat | 296 +- tests/compiler/std/map.untouched.wat | 3744 ++++++++---- tests/compiler/std/math.optimized.wat | 36 +- tests/compiler/std/math.untouched.wat | 579 +- tests/compiler/std/mod.optimized.wat | 8 +- tests/compiler/std/mod.untouched.wat | 50 +- tests/compiler/std/new.untouched.wat | 2 + .../compiler/std/object-literal.optimized.wat | 42 +- .../compiler/std/object-literal.untouched.wat | 54 +- tests/compiler/std/object.optimized.wat | 42 +- tests/compiler/std/object.untouched.wat | 70 +- .../std/operator-overloading.untouched.wat | 4 + tests/compiler/std/pointer.optimized.wat | 24 +- tests/compiler/std/pointer.untouched.wat | 255 +- tests/compiler/std/polyfills.untouched.wat | 96 + tests/compiler/std/set.optimized.wat | 204 +- tests/compiler/std/set.untouched.wat | 2254 ++++--- tests/compiler/std/simd.untouched.wat | 9 + tests/compiler/std/static-array.optimized.wat | 28 +- tests/compiler/std/static-array.untouched.wat | 263 +- .../std/string-encoding.optimized.wat | 711 ++- .../std/string-encoding.untouched.wat | 1116 ++-- tests/compiler/std/string.optimized.wat | 793 ++- tests/compiler/std/string.untouched.wat | 2706 +++++---- tests/compiler/std/symbol.optimized.wat | 110 +- tests/compiler/std/symbol.untouched.wat | 538 +- tests/compiler/std/typedarray.optimized.wat | 633 +- tests/compiler/std/typedarray.untouched.wat | 5158 +++++++++++------ tests/compiler/typeof.optimized.wat | 42 +- tests/compiler/typeof.untouched.wat | 54 +- tests/compiler/wasi-snapshot.untouched.wat | 6 + tests/compiler/while.optimized.wat | 32 +- tests/compiler/while.untouched.wat | 79 +- 132 files changed, 22635 insertions(+), 15692 deletions(-) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 86dc1e7581..be43b674ed 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -114,6 +114,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -175,6 +179,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 0 + drop local.get $2 ) (func $assert-nonnull/testElem (; 11 ;) (param $0 i32) (result i32) diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index bffe105a3d..cdef3aba3d 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -1,5 +1,14 @@ (module + (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) (export "memory" (memory $0)) + (start $start) + (func $start:assert (; 0 ;) + i32.const 0 + drop + ) + (func $start (; 1 ;) + call $start:assert + ) ) diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 3e8df2ce80..3d16cdcb3c 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -122,7 +122,7 @@ i32.shl end local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 127 i32.gt_s @@ -148,7 +148,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -475,7 +475,7 @@ i64.or end local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $2 i64.const 1023 i64.gt_s @@ -501,7 +501,7 @@ i64.const 1 i64.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $1 diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index 63f9f07911..157369ca70 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -74,6 +74,8 @@ (local $42 i32) (local $43 i64) (local $44 i64) + i32.const 1 + drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -955,6 +957,7 @@ (local $8 f32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 i32.reinterpret_f32 local.set $2 @@ -1092,13 +1095,13 @@ i32.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i32.ge_u @@ -1125,9 +1128,8 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -1151,13 +1153,13 @@ i32.const 8 i32.shl i32.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i32.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i32.shl local.set $2 local.get $4 @@ -1742,7 +1744,8 @@ (local $7 i64) (local $8 f64) (local $9 i64) - (local $10 i64) + (local $10 i32) + (local $11 i64) local.get $0 i64.reinterpret_f64 local.set $2 @@ -1884,13 +1887,13 @@ i64.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i64.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i64.ge_u @@ -1917,9 +1920,8 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -1943,13 +1945,13 @@ i64.const 11 i64.shl i64.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i64.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i64.shl local.set $2 local.get $4 diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 5100168e83..42d37e62d5 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -82,7 +82,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -103,20 +103,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -129,18 +127,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 0269881e30..9d397069c8 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -116,6 +116,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -134,6 +135,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -150,15 +153,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -175,39 +178,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -218,17 +223,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 934a6d39cd..7cb9a48973 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -109,6 +109,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 01b72b38a6..22bedc2e48 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -147,6 +147,8 @@ local.get $1 global.get $comma/a i32.lt_s + local.set $0 + local.get $0 if nop global.get $comma/a diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index a8cd22e5b4..7c02dffa3f 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -117,6 +117,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/continue.untouched.wat b/tests/compiler/continue.untouched.wat index 35454b30e3..61b2571776 100644 --- a/tests/compiler/continue.untouched.wat +++ b/tests/compiler/continue.untouched.wat @@ -6,12 +6,15 @@ (export "testInherit" (func $continue/testInherit)) (func $continue/testInherit (; 0 ;) (param $0 i32) (local $1 i32) + (local $2 i32) i32.const 0 local.set $1 loop $for-loop|0 local.get $1 i32.const 10 i32.lt_s + local.set $2 + local.get $2 if block $for-continue|0 local.get $0 diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index edcd450dfb..e53b36150f 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -11,7 +11,7 @@ (start $start) (func $start:do (; 1 ;) (local $0 i32) - loop $continue|0 + loop $do-continue|0 global.get $do/n i32.const 1 i32.sub @@ -21,7 +21,7 @@ i32.add global.set $do/m global.get $do/n - br_if $continue|0 + br_if $do-continue|0 end global.get $do/n if @@ -45,14 +45,14 @@ end i32.const 10 global.set $do/n - loop $continue|1 + loop $do-continue|1 global.get $do/n local.tee $0 i32.const 1 i32.sub global.set $do/n local.get $0 - br_if $continue|1 + br_if $do-continue|1 end global.get $do/n i32.const -1 @@ -69,7 +69,7 @@ global.set $do/n i32.const 0 global.set $do/m - loop $continue|2 + loop $do-continue|2 global.get $do/n i32.const 1 i32.sub @@ -78,7 +78,7 @@ i32.const 1 i32.add global.set $do/m - loop $continue|3 + loop $do-continue|3 global.get $do/n i32.const 1 i32.sub @@ -88,7 +88,7 @@ i32.add global.set $do/o global.get $do/n - br_if $continue|3 + br_if $do-continue|3 end global.get $do/n if @@ -111,7 +111,7 @@ unreachable end global.get $do/n - br_if $continue|2 + br_if $do-continue|2 end global.get $do/n if diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index ff316a9e6e..87e38962eb 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -12,7 +12,7 @@ (start $start) (func $start:do (; 1 ;) (local $0 i32) - loop $continue|0 + loop $do-continue|0 global.get $do/n i32.const 1 i32.sub @@ -22,7 +22,9 @@ i32.add global.set $do/m global.get $do/n - br_if $continue|0 + local.set $0 + local.get $0 + br_if $do-continue|0 end global.get $do/n i32.const 0 @@ -50,7 +52,7 @@ end i32.const 10 global.set $do/n - loop $continue|1 + loop $do-continue|1 nop global.get $do/n local.tee $0 @@ -58,7 +60,9 @@ i32.sub global.set $do/n local.get $0 - br_if $continue|1 + local.set $0 + local.get $0 + br_if $do-continue|1 end global.get $do/n i32.const -1 @@ -76,7 +80,7 @@ global.set $do/n i32.const 0 global.set $do/m - loop $continue|2 + loop $do-continue|2 global.get $do/n i32.const 1 i32.sub @@ -85,7 +89,7 @@ i32.const 1 i32.add global.set $do/m - loop $continue|3 + loop $do-continue|3 global.get $do/n i32.const 1 i32.sub @@ -95,7 +99,9 @@ i32.add global.set $do/o global.get $do/n - br_if $continue|3 + local.set $0 + local.get $0 + br_if $do-continue|3 end global.get $do/n i32.const 0 @@ -122,7 +128,9 @@ unreachable end global.get $do/n - br_if $continue|2 + local.set $0 + local.get $0 + br_if $do-continue|2 end global.get $do/n i32.const 0 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 4fff624ede..7d3038612c 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -163,6 +163,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index 79f23fe6a8..cbb8b63494 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -1408,7 +1408,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1434,10 +1434,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1458,11 +1458,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1483,7 +1483,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1495,7 +1495,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1516,10 +1516,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1535,11 +1535,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1553,7 +1553,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1885,7 +1885,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -1916,7 +1916,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -2327,7 +2327,7 @@ i32.shl i32.add local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $0 i32.lt_u @@ -2344,7 +2344,7 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 5c0a360a9d..f728cc5fb8 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -50,6 +50,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -68,6 +70,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -120,6 +124,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -259,6 +265,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -272,6 +280,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -365,6 +375,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -421,6 +433,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -440,6 +454,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -494,6 +510,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -604,6 +622,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -641,6 +661,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -672,6 +694,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -755,6 +779,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -814,50 +840,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -977,6 +1007,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1049,6 +1081,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1153,6 +1187,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1253,6 +1289,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1265,20 +1302,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1287,23 +1326,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1312,11 +1351,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1339,6 +1378,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1356,19 +1397,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1471,6 +1514,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1562,6 +1607,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1585,9 +1632,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1604,6 +1655,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1623,6 +1676,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1635,6 +1690,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1663,6 +1720,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1706,6 +1765,10 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1773,39 +1836,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1813,13 +1878,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1860,9 +1925,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2019,13 +2083,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2100,9 +2164,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2141,13 +2204,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2222,9 +2285,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2249,13 +2311,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2330,9 +2392,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2802,6 +2863,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2815,6 +2877,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2848,13 +2912,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2865,30 +2929,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2905,37 +2968,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2946,15 +3007,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2971,17 +3032,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2994,16 +3054,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3015,9 +3074,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3035,6 +3093,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -3160,6 +3220,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop end local.get $8 ) @@ -3200,6 +3262,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -3207,6 +3270,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -3418,13 +3483,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -3451,9 +3516,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -3602,12 +3666,16 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if + i32.const 0 + drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3652,6 +3720,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3693,6 +3765,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3773,6 +3847,8 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $2 @@ -3854,6 +3930,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3924,6 +4002,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -3940,6 +4020,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -3950,19 +4033,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -3970,15 +4053,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array#__visit_impl (; 38 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -3989,19 +4074,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -4009,9 +4094,8 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/rt/__visit_members (; 39 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 84232c7893..8aab990cf1 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -115,6 +115,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -152,6 +154,8 @@ i32.const 16 i32.sub local.set $1 + i32.const 1 + drop local.get $1 i32.load offset=4 i32.const 1 @@ -2282,6 +2286,8 @@ global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset + i32.const 1 + drop call $features/simd/test_v128 call $features/simd/test_i8x16 call $features/simd/test_i16x8 diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat index e92ea98dd5..adf8ab9ffc 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.untouched.wat @@ -535,6 +535,8 @@ drop ) (func $start:features/threads (; 2 ;) + i32.const 1 + drop call $features/threads/testAtomic call $features/threads/testAtomicAsm ) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 8e5fd15552..7d270fb39e 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -13,12 +13,16 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) i32.const 0 global.set $for/i loop $for-loop|0 global.get $for/i i32.const 10 i32.lt_s + local.set $0 + local.get $0 if global.get $for/i i32.const 1 @@ -40,16 +44,18 @@ unreachable end i32.const 0 - local.set $0 + local.set $1 loop $for-loop|1 - local.get $0 + local.get $1 i32.const 10 i32.lt_s + local.set $0 + local.get $0 if - local.get $0 + local.get $1 i32.const 1 i32.add - local.set $0 + local.set $1 br $for-loop|1 end end @@ -57,6 +63,8 @@ global.get $for/i i32.const 0 i32.gt_s + local.set $0 + local.get $0 if nop global.get $for/i @@ -81,6 +89,8 @@ block $for-break3 loop $for-loop|3 i32.const 1 + local.set $0 + local.get $0 if global.get $for/i i32.const 10 @@ -99,6 +109,8 @@ block $for-break4 loop $for-loop|4 i32.const 1 + local.set $0 + local.get $0 if global.get $for/i i32.const 1 @@ -115,23 +127,25 @@ end end i32.const 0 - local.set $1 + local.set $2 loop $for-loop|5 - local.get $1 + local.get $2 i32.const 10 i32.lt_s + local.set $0 + local.get $0 if block $for-continue|5 br $for-continue|5 end - local.get $1 + local.get $2 i32.const 1 i32.add - local.set $1 + local.set $2 br $for-loop|5 end end - local.get $1 + local.get $2 i32.const 10 i32.eq i32.eqz @@ -144,38 +158,42 @@ unreachable end i32.const 0 - local.set $2 + local.set $0 loop $for-loop|6 - local.get $2 + local.get $0 i32.const 10 i32.lt_s + local.set $3 + local.get $3 if i32.const 0 - local.set $3 + local.set $4 loop $for-loop|7 - local.get $3 + local.get $4 i32.const 10 i32.lt_s + local.set $5 + local.get $5 if block $for-continue|7 - local.get $2 - local.get $3 + local.get $0 + local.get $4 i32.eq if br $for-continue|7 end end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|7 end end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 + local.set $0 br $for-loop|6 end end diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 544088ea03..1f418c1e58 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -110,6 +110,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index 114518a35c..f7fba3882b 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -132,7 +132,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -158,10 +158,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -182,11 +182,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -207,7 +207,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -219,7 +219,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -240,10 +240,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -259,11 +259,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -277,7 +277,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 17902168dd..3d6e349786 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -121,6 +121,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -139,39 +141,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -179,13 +183,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -226,9 +230,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -385,13 +388,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -466,9 +469,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -507,13 +509,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -588,9 +590,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -615,13 +616,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -696,9 +697,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -1168,6 +1168,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1181,6 +1182,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1214,13 +1217,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1231,30 +1234,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -1271,37 +1273,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -1312,15 +1312,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1337,17 +1337,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -1360,16 +1359,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -1381,9 +1379,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -1453,6 +1450,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) @@ -1485,6 +1484,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 12 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1514,6 +1515,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 14 ;) (param $0 i32) (param $1 i32) (result f32) @@ -1543,6 +1546,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $infer-array/Ref#constructor (; 16 ;) (param $0 i32) (result i32) @@ -1585,6 +1590,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 0 + drop local.get $2 ) (func $start:infer-array (; 19 ;) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 37b618c042..bd3a07c032 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -76,6 +76,8 @@ i32.lt_s select i32.lt_s + local.set $6 + local.get $6 if i32.const 4 global.set $~lib/argc diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index aec2c69f88..8be215c996 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -52,6 +52,7 @@ (func $start:infer-type (; 5 ;) (local $0 i32) (local $1 i32) + (local $2 i32) global.get $infer-type/i drop global.get $infer-type/I @@ -83,6 +84,8 @@ local.get $0 local.get $1 i32.lt_s + local.set $2 + local.get $2 if local.get $0 i32.const 1 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index a72aa03a41..2dba59eb91 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -371,6 +371,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 554ddde4a4..3a453467fb 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -18,18 +18,26 @@ (export "memory" (memory $0)) (start $start) (func $instanceof/isI32 (; 1 ;) (param $0 i32) (result i32) + i32.const 1 + drop i32.const 1 return ) (func $instanceof/isI32 (; 2 ;) (param $0 f64) (result i32) + i32.const 0 + drop i32.const 0 return ) (func $instanceof/isI32 (; 3 ;) (param $0 i32) (result i32) + i32.const 0 + drop i32.const 0 return ) (func $instanceof/isI32 (; 4 ;) (param $0 i32) (result i32) + i32.const 0 + drop i32.const 0 return ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 0e0412d353..9a45c12185 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -24,7 +24,7 @@ i32.const 1 ) (func $loop-flow/whileAny (; 2 ;) (param $0 i32) (result i32) - loop $continue|0 (result i32) + loop $while-continue|0 (result i32) local.get $0 i32.const 1 i32.eq @@ -34,7 +34,7 @@ local.get $0 i32.const 2 i32.ne - br_if $continue|0 + br_if $while-continue|0 i32.const 80 i32.const 32 i32.const 24 @@ -68,7 +68,7 @@ end ) (func $loop-flow/doAny (; 4 ;) (param $0 i32) (result i32) - loop $continue|0 (result i32) + loop $do-continue|0 (result i32) local.get $0 i32.const 1 i32.eq @@ -78,7 +78,7 @@ local.get $0 i32.const 2 i32.ne - br_if $continue|0 + br_if $do-continue|0 i32.const 80 i32.const 32 i32.const 78 @@ -135,8 +135,8 @@ unreachable ) (func $loop-flow/whileContinue (; 7 ;) (result i32) - loop $continue|0 - br $continue|0 + loop $while-continue|0 + br $while-continue|0 end unreachable ) diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index 66e79d7082..e0ec06b62b 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -22,40 +22,58 @@ (export "doAny" (func $loop-flow/doAny)) (start $start) (func $loop-flow/whileReturn (; 1 ;) (result i32) - i32.const 1 - return - ) - (func $loop-flow/whileAny (; 2 ;) (param $0 i32) (result i32) - loop $continue|0 - local.get $0 + (local $0 i32) + loop $while-continue|0 i32.const 1 - i32.eq + local.set $0 + local.get $0 if i32.const 1 return - else + end + end + unreachable + ) + (func $loop-flow/whileAny (; 2 ;) (param $0 i32) (result i32) + (local $1 i32) + loop $while-continue|0 + i32.const 1 + local.set $1 + local.get $1 + if local.get $0 - i32.const 2 + i32.const 1 i32.eq if - i32.const 80 - i32.const 32 - i32.const 24 - i32.const 21 - call $~lib/builtins/abort - unreachable + i32.const 1 + return else - br $continue|0 + local.get $0 + i32.const 2 + i32.eq + if + i32.const 80 + i32.const 32 + i32.const 24 + i32.const 21 + call $~lib/builtins/abort + unreachable + else + br $while-continue|0 + end + unreachable end unreachable end - unreachable end unreachable ) (func $loop-flow/forReturn (; 3 ;) (result i32) + (local $0 i32) loop $for-loop|0 i32.const 1 + local.set $0 + local.get $0 if i32.const 1 return @@ -64,8 +82,11 @@ unreachable ) (func $loop-flow/forAny (; 4 ;) (param $0 i32) (result i32) + (local $1 i32) loop $for-loop|0 i32.const 1 + local.set $1 + local.get $1 if block $for-continue|0 local.get $0 @@ -98,11 +119,14 @@ unreachable ) (func $loop-flow/doReturn (; 5 ;) (result i32) - i32.const 1 - return + loop $do-continue|0 + i32.const 1 + return + end + unreachable ) (func $loop-flow/doAny (; 6 ;) (param $0 i32) (result i32) - loop $continue|0 + loop $do-continue|0 local.get $0 i32.const 1 i32.eq @@ -121,7 +145,7 @@ call $~lib/builtins/abort unreachable else - br $continue|0 + br $do-continue|0 end unreachable end @@ -207,22 +231,40 @@ end ) (func $loop-flow/whileThrow (; 8 ;) (result i32) - i32.const 80 - i32.const 32 - i32.const 11 - i32.const 4 - call $~lib/builtins/abort + (local $0 i32) + loop $while-continue|0 + i32.const 1 + local.set $0 + local.get $0 + if + i32.const 80 + i32.const 32 + i32.const 11 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end unreachable ) (func $loop-flow/whileContinue (; 9 ;) (result i32) - loop $continue|0 - br $continue|0 + (local $0 i32) + loop $while-continue|0 + i32.const 1 + local.set $0 + local.get $0 + if + br $while-continue|0 + end end unreachable ) (func $loop-flow/forThrow (; 10 ;) (result i32) + (local $0 i32) loop $for-loop|0 i32.const 1 + local.set $0 + local.get $0 if i32.const 80 i32.const 32 @@ -235,8 +277,11 @@ unreachable ) (func $loop-flow/forContinue (; 11 ;) (result i32) + (local $0 i32) loop $for-loop|0 i32.const 1 + local.set $0 + local.get $0 if block $for-continue|0 br $for-continue|0 @@ -247,11 +292,14 @@ unreachable ) (func $loop-flow/doThrow (; 12 ;) (result i32) - i32.const 80 - i32.const 32 - i32.const 71 - i32.const 4 - call $~lib/builtins/abort + loop $do-continue|0 + i32.const 80 + i32.const 32 + i32.const 71 + i32.const 4 + call $~lib/builtins/abort + unreachable + end unreachable ) (func $start (; 13 ;) diff --git a/tests/compiler/loop-wrap.optimized.wat b/tests/compiler/loop-wrap.optimized.wat index eed3fe7b62..be239915d9 100644 --- a/tests/compiler/loop-wrap.optimized.wat +++ b/tests/compiler/loop-wrap.optimized.wat @@ -8,7 +8,7 @@ (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) (func $loop-wrap/testAlwaysWrapped (; 0 ;) (local $0 i32) - loop $continue|0 + loop $do-continue|0 local.get $0 i32.const 10 i32.ne @@ -19,31 +19,31 @@ i32.const 255 i32.and local.tee $0 - br_if $continue|0 + br_if $do-continue|0 end end ) (func $loop-wrap/testFirstWrapped (; 1 ;) (local $0 i32) - loop $continue|0 + loop $while-continue|1 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 255 + i32.and + i32.const 0 local.get $0 i32.const 255 i32.and i32.const 10 i32.ne - if - local.get $0 - i32.const 1 - i32.add - local.tee $0 - i32.const 255 - i32.and - br_if $continue|0 - end + select + br_if $while-continue|1 end ) (func $loop-wrap/testSubsequentWrapped (; 2 ;) (param $0 i32) - loop $continue|0 + loop $do-continue|0 local.get $0 i32.const 255 i32.and @@ -56,7 +56,7 @@ i32.const 255 i32.and local.tee $0 - br_if $continue|0 + br_if $do-continue|0 end end ) diff --git a/tests/compiler/loop-wrap.untouched.wat b/tests/compiler/loop-wrap.untouched.wat index 6664586a99..e77f401ce4 100644 --- a/tests/compiler/loop-wrap.untouched.wat +++ b/tests/compiler/loop-wrap.untouched.wat @@ -9,15 +9,16 @@ (export "testSubsequentWrapped" (func $loop-wrap/testSubsequentWrapped)) (func $loop-wrap/testAlwaysWrapped (; 0 ;) (local $0 i32) + (local $1 i32) i32.const 0 local.set $0 - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $0 i32.const 10 i32.eq if - br $break|0 + br $do-break|0 end local.get $0 i32.const 1 @@ -25,47 +26,55 @@ i32.const 255 i32.and local.tee $0 - br_if $continue|0 + local.set $1 + local.get $1 + br_if $do-continue|0 end end ) (func $loop-wrap/testFirstWrapped (; 1 ;) (local $0 i32) + (local $1 i32) i32.const 0 local.set $0 - block $break|0 - loop $continue|0 - local.get $0 - i32.const 255 - i32.and - i32.const 10 - i32.eq - if - br $break|0 - end + block $while-break|1 + loop $while-continue|1 local.get $0 i32.const 1 i32.add local.tee $0 i32.const 255 i32.and - br_if $continue|0 + local.set $1 + local.get $1 + if + local.get $0 + i32.const 255 + i32.and + i32.const 10 + i32.eq + if + br $while-break|1 + end + br $while-continue|1 + end end end ) (func $loop-wrap/testSubsequentWrapped (; 2 ;) (param $0 i32) (local $1 i32) + (local $2 i32) local.get $0 local.set $1 - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $1 i32.const 255 i32.and i32.const 10 i32.eq if - br $break|0 + br $do-break|0 end local.get $1 i32.const 1 @@ -73,7 +82,9 @@ i32.const 255 i32.and local.tee $1 - br_if $continue|0 + local.set $2 + local.get $2 + br_if $do-continue|0 end end ) diff --git a/tests/compiler/mandelbrot.optimized.wat b/tests/compiler/mandelbrot.optimized.wat index acd891ba71..8b5f32f1ca 100644 --- a/tests/compiler/mandelbrot.optimized.wat +++ b/tests/compiler/mandelbrot.optimized.wat @@ -448,47 +448,47 @@ local.set $5 i32.const 0 local.set $6 - loop $continue|1 - block $break|1 - local.get $4 - local.get $4 - f64.mul - local.tee $15 - local.get $5 - local.get $5 - f64.mul - local.tee $7 - f64.add - f64.const 4 - f64.le - i32.eqz - br_if $break|1 - f64.const 2 - local.get $4 - f64.mul - local.get $5 - f64.mul - local.get $11 - f64.add - local.set $5 - local.get $15 - local.get $7 - f64.sub - local.get $12 - f64.add - local.set $4 - local.get $6 - local.get $3 - i32.ge_u - br_if $break|1 - local.get $6 - i32.const 1 - i32.add - local.set $6 - br $continue|1 + loop $while-continue|1 + local.get $4 + local.get $4 + f64.mul + local.tee $15 + local.get $5 + local.get $5 + f64.mul + local.tee $7 + f64.add + f64.const 4 + f64.le + if + block $while-break|1 + f64.const 2 + local.get $4 + f64.mul + local.get $5 + f64.mul + local.get $11 + f64.add + local.set $5 + local.get $15 + local.get $7 + f64.sub + local.get $12 + f64.add + local.set $4 + local.get $6 + local.get $3 + i32.ge_u + br_if $while-break|1 + local.get $6 + i32.const 1 + i32.add + local.set $6 + br $while-continue|1 + end end end - loop $continue|2 + loop $while-continue|2 local.get $6 local.get $0 i32.lt_u @@ -515,7 +515,7 @@ i32.const 1 i32.add local.set $6 - br $continue|2 + br $while-continue|2 end end i32.const 2047 diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat index 1653028fd9..c345e0c161 100644 --- a/tests/compiler/mandelbrot.untouched.wat +++ b/tests/compiler/mandelbrot.untouched.wat @@ -42,6 +42,8 @@ (local $18 i32) (local $19 f64) (local $20 f64) + i32.const 1 + drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -374,6 +376,8 @@ (local $23 f64) (local $24 f64) (local $25 f64) + i32.const 1 + drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -716,12 +720,14 @@ (local $16 f64) (local $17 f64) (local $18 f64) - (local $19 f64) + (local $19 i32) (local $20 i32) (local $21 f64) (local $22 f64) (local $23 f64) (local $24 f64) + (local $25 f64) + (local $26 f64) local.get $1 f64.convert_i32_u f64.const 1 @@ -789,6 +795,8 @@ local.get $6 local.get $1 i32.lt_u + local.set $7 + local.get $7 if local.get $6 f64.convert_i32_u @@ -802,9 +810,9 @@ f64.const 0 local.set $16 i32.const 0 - local.set $7 - block $break|1 - loop $continue|1 + local.set $19 + block $while-break|1 + loop $while-continue|1 local.get $15 local.get $15 f64.mul @@ -816,43 +824,44 @@ f64.add f64.const 4 f64.le - i32.eqz - br_if $break|1 - f64.const 2 - local.get $15 - f64.mul - local.get $16 - f64.mul - local.get $9 - f64.add - local.set $16 - local.get $17 - local.get $18 - f64.sub - local.get $14 - f64.add - local.set $15 - local.get $7 - local.get $3 - i32.ge_u + local.set $20 + local.get $20 if - br $break|1 + f64.const 2 + local.get $15 + f64.mul + local.get $16 + f64.mul + local.get $9 + f64.add + local.set $16 + local.get $17 + local.get $18 + f64.sub + local.get $14 + f64.add + local.set $15 + local.get $19 + local.get $3 + i32.ge_u + if + br $while-break|1 + end + local.get $19 + i32.const 1 + i32.add + local.set $19 + br $while-continue|1 end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $continue|1 end - unreachable end - block $break|2 - loop $continue|2 - local.get $7 - local.get $13 - i32.lt_u - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $19 + local.get $13 + i32.lt_u + local.set $20 + local.get $20 + if local.get $15 local.get $15 f64.mul @@ -862,7 +871,7 @@ f64.sub local.get $14 f64.add - local.set $19 + local.set $21 f64.const 2 local.get $15 f64.mul @@ -871,15 +880,14 @@ local.get $9 f64.add local.set $16 - local.get $19 + local.get $21 local.set $15 - local.get $7 + local.get $19 i32.const 1 i32.add - local.set $7 - br $continue|2 + local.set $19 + br $while-continue|2 end - unreachable end global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS i32.const 1 @@ -892,38 +900,38 @@ local.get $16 f64.mul f64.add - local.set $19 - local.get $19 + local.set $22 + local.get $22 f64.const 1 f64.gt if f64.const 0.5 - local.get $19 + local.get $22 call $~lib/math/NativeMath.log f64.mul call $~lib/math/NativeMath.log2 - local.set $21 + local.set $23 global.get $../../examples/mandelbrot/assembly/index/NUM_COLORS i32.const 1 i32.sub f64.convert_i32_s - local.get $7 + local.get $19 i32.const 1 i32.add f64.convert_i32_u - local.get $21 + local.get $23 f64.sub local.get $12 f64.mul - local.set $24 + local.set $26 f64.const 0 - local.set $23 + local.set $25 f64.const 1 - local.set $22 - local.get $24 - local.get $23 + local.set $24 + local.get $26 + local.get $25 f64.max - local.get $22 + local.get $24 f64.min f64.mul i32.trunc_f64_u diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index abcf44d369..b823b9bf73 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -16,7 +16,7 @@ (local $6 i32) local.get $0 local.set $6 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 3 i32.and @@ -42,7 +42,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $0 @@ -50,7 +50,7 @@ i32.and i32.eqz if - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 16 i32.ge_u @@ -95,7 +95,7 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end end local.get $2 @@ -232,7 +232,7 @@ i32.const 3 i32.sub local.set $2 - loop $continue|3 + loop $while-continue|3 local.get $2 i32.const 17 i32.ge_u @@ -307,7 +307,7 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end end br $break|2 @@ -341,7 +341,7 @@ i32.const 2 i32.sub local.set $2 - loop $continue|4 + loop $while-continue|4 local.get $2 i32.const 18 i32.ge_u @@ -416,7 +416,7 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end end br $break|2 @@ -442,7 +442,7 @@ i32.const 1 i32.sub local.set $2 - loop $continue|5 + loop $while-continue|5 local.get $2 i32.const 19 i32.ge_u @@ -517,7 +517,7 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 0d3a44af3e..8adea887ad 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -16,41 +16,41 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 4 - i32.rem_u - else - i32.const 0 - end - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 4 + i32.rem_u + else + i32.const 0 + end + local.set $6 + local.get $6 + if local.get $0 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $0 - local.get $6 + local.get $7 local.get $1 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $1 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 4 @@ -58,13 +58,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $6 + local.get $6 + if local.get $0 local.get $1 i32.load @@ -105,9 +105,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -265,13 +264,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $6 + local.get $6 + if local.get $1 i32.const 1 i32.add @@ -346,9 +345,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -387,13 +385,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $6 + local.get $6 + if local.get $1 i32.const 2 i32.add @@ -468,9 +466,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -495,13 +492,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $6 + local.get $6 + if local.get $1 i32.const 3 i32.add @@ -576,9 +573,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index 0df9ae9ce6..dc737a1817 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -33,40 +33,39 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and if local.get $2 + i32.eqz if - local.get $2 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.tee $4 - i32.const 1 - i32.add - local.set $0 - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $4 - local.get $5 - i32.load8_u - i32.store8 - br $continue|0 - else local.get $3 return end - unreachable + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.tee $4 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $4 + local.get $5 + i32.load8_u + i32.store8 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 8 i32.ge_u @@ -87,11 +86,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $2 if local.get $0 @@ -112,7 +111,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|2 + br $while-continue|2 end end else @@ -124,7 +123,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $2 i32.add @@ -132,27 +131,26 @@ i32.and if local.get $2 + i32.eqz if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.tee $2 - i32.add - local.get $1 - local.get $2 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - else local.get $3 return end - unreachable + local.get $0 + local.get $2 + i32.const 1 + i32.sub + local.tee $2 + i32.add + local.get $1 + local.get $2 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $2 i32.const 8 i32.ge_u @@ -168,11 +166,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $2 if local.get $0 @@ -186,7 +184,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 25fd51328c..6d7dfe20db 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -13,6 +13,7 @@ (func $memmove/memmove (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 local.set $3 local.get $0 @@ -34,13 +35,13 @@ i32.rem_u i32.eq if - block $break|0 - loop $continue|0 - local.get $0 - i32.const 8 - i32.rem_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $0 + i32.const 8 + i32.rem_u + local.set $4 + local.get $4 + if local.get $2 i32.eqz if @@ -52,30 +53,29 @@ i32.sub local.set $2 local.get $0 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $0 - local.get $4 + local.get $5 local.get $1 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $1 - local.get $4 + local.get $5 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $2 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + local.set $4 + local.get $4 + if local.get $0 local.get $1 i64.load @@ -92,37 +92,35 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $2 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $2 + local.set $4 + local.get $4 + if local.get $0 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $0 - local.get $4 + local.get $5 local.get $1 - local.tee $4 + local.tee $5 i32.const 1 i32.add local.set $1 - local.get $4 + local.get $5 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $1 @@ -133,15 +131,15 @@ i32.rem_u i32.eq if - block $break|3 - loop $continue|3 - local.get $0 - local.get $2 - i32.add - i32.const 8 - i32.rem_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $0 + local.get $2 + i32.add + i32.const 8 + i32.rem_u + local.set $4 + local.get $4 + if local.get $2 i32.eqz if @@ -159,17 +157,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $2 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 8 + i32.ge_u + local.set $4 + local.get $4 + if local.get $2 i32.const 8 i32.sub @@ -182,16 +179,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $2 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + local.set $4 + local.get $4 + if local.get $0 local.get $2 i32.const 1 @@ -203,9 +199,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end local.get $3 diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index 8aa36accf1..c28d2ffeea 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -197,7 +197,7 @@ i64.shl i64.or local.set $4 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u @@ -228,7 +228,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index 7e0a4e0564..a7d7e75268 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -15,6 +15,7 @@ (local $4 i32) (local $5 i32) (local $6 i64) + (local $7 i32) local.get $0 local.set $3 local.get $2 @@ -234,13 +235,13 @@ i64.shl i64.or local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + i32.const 32 + i32.ge_u + local.set $7 + local.get $7 + if local.get $0 local.get $6 i64.store @@ -267,9 +268,8 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $3 ) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index b46e25b86c..e6f6f2731b 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -109,6 +109,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 45fe1586c3..7d95607112 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -182,7 +182,7 @@ ) (func $~lib/util/number/utoa_simple (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -201,7 +201,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 5 ;) (param $0 i32) (result i32) @@ -269,7 +269,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -290,20 +290,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -316,18 +314,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -405,7 +401,7 @@ i32.const 1332 i32.load local.set $12 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -563,80 +559,82 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $12 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $12 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $2 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $8 - local.get $9 - i64.sub - i64.gt_u - local.get $8 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.tee $8 + local.get $9 + i64.sub + i64.gt_u + local.get $8 + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $0 + local.get $4 + i32.store16 + local.get $2 + return end - local.get $0 - local.get $4 - i32.store16 - local.get $2 - return + br $while-continue|0 end end - loop $continue|3 + loop $while-continue|4 local.get $5 i64.const 10 i64.mul @@ -683,7 +681,7 @@ local.tee $8 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 end local.get $4 global.get $~lib/util/number/_K @@ -712,7 +710,7 @@ local.tee $0 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -749,7 +747,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $0 @@ -779,7 +777,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -805,10 +803,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -829,11 +827,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -854,7 +852,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -866,7 +864,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -887,10 +885,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -906,11 +904,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -924,7 +922,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1082,34 +1080,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 8d49663d55..e46edb8f9f 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -223,6 +223,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -240,50 +242,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 480 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -293,15 +298,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -310,30 +314,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -350,13 +354,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -366,13 +370,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -420,6 +424,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -434,6 +440,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -459,6 +471,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -477,6 +490,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -493,15 +508,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -518,39 +533,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -561,17 +578,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -677,14 +693,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -722,13 +741,13 @@ i32.const 1776 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -742,44 +761,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -788,7 +807,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -798,7 +817,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -808,7 +827,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -818,7 +837,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -828,7 +847,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -838,7 +857,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -848,7 +867,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -858,7 +877,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -868,7 +887,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -876,31 +895,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -917,8 +936,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -927,13 +946,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -943,266 +962,270 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub local.get $22 - local.get $20 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 + local.get $22 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/memory/memcpy (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1210,13 +1233,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1257,9 +1280,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -1416,13 +1438,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -1497,9 +1519,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -1538,13 +1559,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -1619,9 +1640,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -1646,13 +1666,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -1727,9 +1747,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2199,6 +2218,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2212,6 +2232,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2245,13 +2267,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2262,30 +2284,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2302,37 +2323,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2343,15 +2362,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2368,17 +2387,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2391,16 +2409,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -2412,9 +2429,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -2469,6 +2485,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -2577,6 +2595,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -2607,41 +2627,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -2687,8 +2709,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -2699,24 +2721,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -3287,6 +3311,8 @@ i32.const 16 i32.sub local.set $1 + i32.const 1 + drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 6017482a21..d9bac43f25 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -116,6 +116,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/possibly-null.optimized.wat b/tests/compiler/possibly-null.optimized.wat index 175e2d2029..ad9f89271f 100644 --- a/tests/compiler/possibly-null.optimized.wat +++ b/tests/compiler/possibly-null.optimized.wat @@ -25,27 +25,27 @@ nop ) (func $possibly-null/testWhile (; 1 ;) (param $0 i32) - loop $continue|0 + loop $while-continue|0 local.get $0 if i32.const 0 local.set $0 - br $continue|0 + br $while-continue|0 end end ) (func $possibly-null/testWhile2 (; 2 ;) (param $0 i32) (param $1 i32) - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $1 local.set $0 - br $continue|0 + br $while-continue|0 end end ) (func $possibly-null/testWhile3 (; 3 ;) (param $0 i32) (param $1 i32) - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $1 @@ -53,7 +53,7 @@ local.get $1 local.set $0 end - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index 15951d41b2..bf1c67a71d 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -35,7 +35,8 @@ local.set $0 local.get $0 if - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -51,7 +52,8 @@ call $~lib/rt/stub/__release return else - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -67,6 +69,8 @@ call $~lib/rt/stub/__release return end + i32.const 0 + drop local.get $0 call $~lib/rt/stub/__release ) @@ -78,7 +82,8 @@ i32.const 0 i32.ne if - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -95,7 +100,8 @@ call $~lib/rt/stub/__release return else - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -112,6 +118,8 @@ call $~lib/rt/stub/__release return end + i32.const 0 + drop local.get $0 call $~lib/rt/stub/__release ) @@ -124,7 +132,8 @@ i32.eq i32.eqz if - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -142,7 +151,8 @@ call $~lib/rt/stub/__release return else - nop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -160,37 +170,43 @@ call $~lib/rt/stub/__release return end + i32.const 0 + drop local.get $0 call $~lib/rt/stub/__release ) (func $possibly-null/testWhile (; 11 ;) (param $0 i32) (local $1 i32) (local $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if + i32.const 0 + drop i32.const 0 - local.tee $1 - local.get $0 local.tee $2 + local.get $0 + local.tee $3 i32.ne if - local.get $1 - call $~lib/rt/stub/__retain - local.set $1 local.get $2 + call $~lib/rt/stub/__retain + local.set $2 + local.get $3 call $~lib/rt/stub/__release end - local.get $1 + local.get $2 local.set $0 - br $continue|0 + i32.const 0 + drop + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/stub/__release @@ -198,34 +214,38 @@ (func $possibly-null/testWhile2 (; 12 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $0 + local.set $2 + local.get $2 + if + i32.const 0 + drop local.get $1 - local.tee $2 - local.get $0 local.tee $3 + local.get $0 + local.tee $4 i32.ne if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $4 call $~lib/rt/stub/__release end - local.get $2 + local.get $3 local.set $0 - br $continue|0 + i32.const 0 + drop + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/stub/__release @@ -235,37 +255,41 @@ (func $possibly-null/testWhile3 (; 13 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 local.get $1 call $~lib/rt/stub/__retain local.set $1 - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $0 + local.set $2 + local.get $2 + if + i32.const 0 + drop local.get $1 if local.get $1 - local.tee $2 - local.get $0 local.tee $3 + local.get $0 + local.tee $4 i32.ne if - local.get $2 - call $~lib/rt/stub/__retain - local.set $2 local.get $3 + call $~lib/rt/stub/__retain + local.set $3 + local.get $4 call $~lib/rt/stub/__release end - local.get $2 + local.get $3 local.set $0 + i32.const 0 + drop end - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/stub/__release @@ -339,9 +363,15 @@ i32.const 0 end if - nop + i32.const 0 + drop + i32.const 0 + drop else - nop + i32.const 0 + drop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -364,9 +394,15 @@ i32.eqz end if - nop + i32.const 0 + drop + i32.const 0 + drop else - nop + i32.const 0 + drop + i32.const 0 + drop end local.get $0 call $~lib/rt/stub/__release @@ -396,6 +432,8 @@ end local.get $2 local.set $0 + i32.const 0 + drop local.get $0 call $~lib/rt/stub/__release local.get $1 diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index 6bd68a70c9..db8058e617 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -1347,7 +1347,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1373,10 +1373,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1397,11 +1397,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1422,7 +1422,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1434,7 +1434,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1455,10 +1455,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1474,11 +1474,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1492,7 +1492,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index 36627ca029..dcc2d89fdf 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -66,8 +66,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -109,6 +113,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -127,6 +133,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -179,6 +187,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -318,6 +328,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -331,6 +343,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -424,6 +438,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -480,6 +496,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -499,6 +517,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -553,6 +573,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -681,6 +703,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -717,6 +741,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -754,6 +780,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -785,6 +813,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -868,6 +898,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -927,50 +959,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1090,6 +1126,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1162,6 +1200,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1339,6 +1379,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1351,20 +1392,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1373,23 +1416,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1398,11 +1441,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1425,6 +1468,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1442,19 +1487,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1557,6 +1604,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1648,6 +1697,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 23 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1671,9 +1722,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1690,6 +1745,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1709,6 +1766,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1721,6 +1780,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1749,6 +1810,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1770,39 +1833,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1810,13 +1875,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1857,9 +1922,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2016,13 +2080,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2097,9 +2161,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2138,13 +2201,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2219,9 +2282,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2246,13 +2308,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2327,9 +2389,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2799,6 +2860,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2812,6 +2874,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2845,13 +2909,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2862,30 +2926,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2902,37 +2965,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2943,15 +3004,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2968,17 +3029,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2991,16 +3051,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3012,9 +3071,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3076,6 +3134,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3086,6 +3146,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3134,8 +3196,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3177,6 +3243,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3326,6 +3394,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3396,6 +3466,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index c761769f87..389a957638 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -1357,7 +1357,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1383,10 +1383,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1407,11 +1407,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1432,7 +1432,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1444,7 +1444,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1465,10 +1465,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1484,11 +1484,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1502,7 +1502,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index 5df94defab..102e678c66 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -47,6 +47,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -65,6 +67,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -117,6 +121,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -256,6 +262,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -269,6 +277,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -362,6 +372,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -418,6 +430,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -437,6 +451,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -491,6 +507,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -619,6 +637,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -655,6 +675,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -692,6 +714,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -723,6 +747,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -806,6 +832,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -865,50 +893,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1028,6 +1060,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1100,6 +1134,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1277,6 +1313,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1289,20 +1326,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1311,23 +1350,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1336,11 +1375,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1363,6 +1402,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1380,19 +1421,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1495,6 +1538,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1586,6 +1631,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1609,9 +1656,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1628,6 +1679,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1647,6 +1700,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1659,6 +1714,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1687,6 +1744,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1708,39 +1767,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1748,13 +1809,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1795,9 +1856,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -1954,13 +2014,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2035,9 +2095,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2076,13 +2135,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2157,9 +2216,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2184,13 +2242,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2265,9 +2323,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2737,6 +2794,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2750,6 +2808,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2783,13 +2843,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2800,30 +2860,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2840,37 +2899,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2881,15 +2938,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2906,17 +2963,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2929,16 +2985,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -2950,9 +3005,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3014,6 +3068,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3024,6 +3080,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3072,8 +3130,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3115,6 +3177,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3208,8 +3272,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3316,6 +3384,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3386,6 +3456,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index 37a31bb55b..4c05a44162 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -1416,7 +1416,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1442,10 +1442,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1466,11 +1466,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1491,7 +1491,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1503,7 +1503,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1524,10 +1524,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1543,11 +1543,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1561,7 +1561,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index a312f6c0b3..55ed027719 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -47,6 +47,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -65,6 +67,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -117,6 +121,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -256,6 +262,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -269,6 +277,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -362,6 +372,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -418,6 +430,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -437,6 +451,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -491,6 +507,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -601,6 +619,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -638,6 +658,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -669,6 +691,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -752,6 +776,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -811,50 +837,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -974,6 +1004,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1046,6 +1078,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1150,6 +1184,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1252,6 +1288,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1264,20 +1301,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1286,23 +1325,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1311,11 +1350,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1338,6 +1377,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1355,19 +1396,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1470,6 +1513,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1561,6 +1606,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1584,9 +1631,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1603,6 +1654,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1622,6 +1675,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1634,6 +1689,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1662,6 +1719,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1707,8 +1766,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1781,39 +1844,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1821,13 +1886,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1868,9 +1933,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2027,13 +2091,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2108,9 +2172,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2149,13 +2212,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2230,9 +2293,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2257,13 +2319,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2338,9 +2400,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2810,6 +2871,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2823,6 +2885,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2856,13 +2920,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2873,30 +2937,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2913,37 +2976,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2954,15 +3015,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2979,17 +3040,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3002,16 +3062,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3023,9 +3082,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3087,6 +3145,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3097,6 +3157,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3145,8 +3207,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3188,6 +3254,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3356,6 +3424,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3426,6 +3496,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 2d08deecb0..4a08827b06 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -1416,7 +1416,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1442,10 +1442,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1466,11 +1466,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1491,7 +1491,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1503,7 +1503,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1524,10 +1524,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1543,11 +1543,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1561,7 +1561,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 5e8813d6c1..4f24efa95d 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -47,6 +47,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -65,6 +67,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -117,6 +121,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -256,6 +262,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -269,6 +277,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -362,6 +372,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -418,6 +430,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -437,6 +451,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -491,6 +507,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -601,6 +619,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -638,6 +658,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -669,6 +691,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -752,6 +776,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -811,50 +837,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -974,6 +1004,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1046,6 +1078,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1150,6 +1184,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1252,6 +1288,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1264,20 +1301,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1286,23 +1325,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1311,11 +1350,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1338,6 +1377,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1355,19 +1396,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1470,6 +1513,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1561,6 +1606,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1584,9 +1631,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1603,6 +1654,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1622,6 +1675,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1634,6 +1689,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1662,6 +1719,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1707,8 +1766,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1781,39 +1844,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1821,13 +1886,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1868,9 +1933,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2027,13 +2091,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2108,9 +2172,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2149,13 +2212,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2230,9 +2293,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2257,13 +2319,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2338,9 +2400,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2810,6 +2871,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2823,6 +2885,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2856,13 +2920,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2873,30 +2937,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2913,37 +2976,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2954,15 +3015,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2979,17 +3040,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3002,16 +3062,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3023,9 +3082,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3087,6 +3145,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3097,6 +3157,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3145,8 +3207,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3188,6 +3254,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3356,6 +3424,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3426,6 +3496,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/optimize.optimized.wat b/tests/compiler/rc/optimize.optimized.wat index a88b224b90..fa3d37be04 100644 --- a/tests/compiler/rc/optimize.optimized.wat +++ b/tests/compiler/rc/optimize.optimized.wat @@ -41,7 +41,7 @@ (export "OptimizeARC.eliminates.balancedInsideLoop" (func $rc/optimize/eliminated_vii)) (export "OptimizeARC.eliminates.balancedOutsideLoop" (func $rc/optimize/eliminated_vii)) (export "OptimizeARC.eliminates.balancedInsideOutsideLoop" (func $rc/optimize/eliminated_vii)) - (export "OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch" (func $rc/optimize/eliminated_viii)) + (export "OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch" (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch)) (export "OptimizeARC.eliminates.replace" (func $rc/optimize/eliminated_vii)) (export "OptimizeARC.eliminates.replaceAlreadyRetained" (func $rc/optimize/eliminated_rr)) (export "OptimizeARC.keeps.partialRetains" (func $rc/optimize/OptimizeARC.keeps.partialRetains)) @@ -1454,7 +1454,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1480,10 +1480,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1504,11 +1504,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1529,7 +1529,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1541,7 +1541,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1562,10 +1562,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1581,11 +1581,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1599,7 +1599,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1800,7 +1800,19 @@ (func $rc/optimize/eliminated_rr (; 35 ;) (param $0 i32) (result i32) call $rc/optimize/getRef ) - (func $rc/optimize/OptimizeARC.keeps.partialRetains (; 36 ;) (param $0 i32) (param $1 i32) + (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) + loop $while-continue|0 + local.get $1 + if + local.get $2 + if + return + end + br $while-continue|0 + end + end + ) + (func $rc/optimize/OptimizeARC.keeps.partialRetains (; 37 ;) (param $0 i32) (param $1 i32) local.get $1 if (result i32) local.get $0 @@ -1810,7 +1822,7 @@ end call $~lib/rt/pure/__release ) - (func $rc/optimize/OptimizeARC.keeps.reachesReturn (; 37 ;) (param $0 i32) (param $1 i32) (result i32) + (func $rc/optimize/OptimizeARC.keeps.reachesReturn (; 38 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -1823,16 +1835,16 @@ call $~lib/rt/pure/__release i32.const 0 ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (; 38 ;) (param $0 i32) + (func $rc/optimize/FinalizeARC.keeps.dynamicRetain (; 39 ;) (param $0 i32) local.get $0 call $~lib/rt/pure/__retain drop ) - (func $rc/optimize/FinalizeARC.keeps.dynamicRelease (; 39 ;) (param $0 i32) + (func $rc/optimize/FinalizeARC.keeps.dynamicRelease (; 40 ;) (param $0 i32) local.get $0 call $~lib/rt/pure/__release ) - (func $~lib/rt/pure/__visit (; 40 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 41 ;) (param $0 i32) (param $1 i32) local.get $0 i32.const 356 i32.lt_u @@ -1935,7 +1947,7 @@ unreachable end ) - (func $~lib/rt/__visit_members (; 41 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 42 ;) (param $0 i32) (param $1 i32) block $switch$1$default block $switch$1$case$4 block $switch$1$case$2 diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat index de761a7443..b66c78d24e 100644 --- a/tests/compiler/rc/optimize.untouched.wat +++ b/tests/compiler/rc/optimize.untouched.wat @@ -99,8 +99,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -142,6 +146,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -160,6 +166,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -212,6 +220,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -351,6 +361,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -364,6 +376,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -457,6 +471,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -513,6 +529,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -532,6 +550,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -586,6 +606,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -696,6 +718,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -733,6 +757,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -764,6 +790,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -847,6 +875,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -906,50 +936,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1069,6 +1103,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1141,6 +1177,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1245,6 +1283,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1347,6 +1387,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1359,20 +1400,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1381,23 +1424,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1406,11 +1449,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1433,6 +1476,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1450,19 +1495,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1565,6 +1612,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1656,6 +1705,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1679,9 +1730,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1698,6 +1753,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1717,6 +1774,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1729,6 +1788,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1757,6 +1818,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1819,39 +1882,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1859,13 +1924,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1906,9 +1971,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2065,13 +2129,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2146,9 +2210,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2187,13 +2250,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2268,9 +2331,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2295,13 +2357,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2376,9 +2438,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2848,6 +2909,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2861,6 +2923,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2894,13 +2958,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2911,30 +2975,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2951,37 +3014,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2992,15 +3053,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3017,17 +3078,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3040,16 +3100,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3061,9 +3120,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3125,6 +3183,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3135,6 +3195,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3183,8 +3245,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3226,6 +3292,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3382,67 +3450,68 @@ call $~lib/rt/pure/__release ) (func $rc/optimize/OptimizeARC.eliminates.balancedInsideLoop (; 44 ;) (param $0 i32) (param $1 i32) - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 + (local $2 i32) + loop $while-continue|0 + local.get $1 + local.set $2 + local.get $2 + if local.get $0 call $~lib/rt/pure/__retain local.set $0 local.get $0 call $~lib/rt/pure/__release - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $rc/optimize/OptimizeARC.eliminates.balancedOutsideLoop (; 45 ;) (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 - br $continue|0 + loop $while-continue|0 + local.get $1 + local.set $2 + local.get $2 + if + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release ) (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoop (; 46 ;) (param $0 i32) (param $1 i32) + (local $2 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + local.set $2 + local.get $2 + if local.get $0 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__retain local.set $0 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release ) (func $rc/optimize/OptimizeARC.eliminates.balancedInsideOutsideLoopWithBranch (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + local.set $3 + local.get $3 + if local.get $2 if local.get $0 @@ -3454,9 +3523,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 call $~lib/rt/pure/__release @@ -3608,6 +3676,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3678,6 +3748,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/rereturn.optimized.wat b/tests/compiler/rc/rereturn.optimized.wat index 5d4d959214..23beebdf28 100644 --- a/tests/compiler/rc/rereturn.optimized.wat +++ b/tests/compiler/rc/rereturn.optimized.wat @@ -1404,7 +1404,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1430,10 +1430,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1454,11 +1454,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1479,7 +1479,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1491,7 +1491,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1512,10 +1512,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1531,11 +1531,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1549,7 +1549,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 87b915e9e9..5fe6bef691 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -47,6 +47,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -65,6 +67,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -117,6 +121,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -256,6 +262,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -269,6 +277,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -362,6 +372,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -418,6 +430,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -437,6 +451,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -491,6 +507,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -601,6 +619,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -638,6 +658,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -669,6 +691,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -752,6 +776,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -811,50 +837,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -974,6 +1004,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1046,6 +1078,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1150,6 +1184,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1250,6 +1286,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1262,20 +1299,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1284,23 +1323,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1309,11 +1348,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1336,6 +1375,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1353,19 +1394,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1468,6 +1511,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1559,6 +1604,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1582,9 +1629,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1601,6 +1652,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1620,6 +1673,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1632,6 +1687,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1660,6 +1717,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1703,6 +1762,10 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1759,39 +1822,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1799,13 +1864,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1846,9 +1911,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2005,13 +2069,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2086,9 +2150,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2127,13 +2190,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2208,9 +2271,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2235,13 +2297,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2316,9 +2378,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2788,6 +2849,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2801,6 +2863,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2834,13 +2898,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2851,30 +2915,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2891,37 +2954,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2932,15 +2993,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2957,17 +3018,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2980,16 +3040,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3001,9 +3060,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3065,12 +3123,16 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if + i32.const 0 + drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3115,6 +3177,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3156,6 +3222,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3292,6 +3360,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3362,6 +3432,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index fb53ef547f..df0391edf3 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -1427,7 +1427,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1453,10 +1453,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1477,11 +1477,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1502,7 +1502,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1514,7 +1514,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1535,10 +1535,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1554,11 +1554,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1572,7 +1572,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 929660ec89..2d5713af34 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -49,6 +49,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -67,6 +69,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -119,6 +123,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -258,6 +264,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -271,6 +279,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -364,6 +374,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -420,6 +432,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -439,6 +453,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -493,6 +509,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -603,6 +621,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -640,6 +660,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -671,6 +693,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -754,6 +778,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -813,50 +839,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -976,6 +1006,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1048,6 +1080,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1152,6 +1186,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1254,6 +1290,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1266,20 +1303,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1288,23 +1327,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1313,11 +1352,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1340,6 +1379,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1357,19 +1398,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1472,6 +1515,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1563,6 +1608,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1586,9 +1633,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1605,6 +1656,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1624,6 +1677,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1636,6 +1691,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1664,6 +1721,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1709,8 +1768,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1792,39 +1855,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1832,13 +1897,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1879,9 +1944,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2038,13 +2102,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2119,9 +2183,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2160,13 +2223,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2241,9 +2304,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2268,13 +2330,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2349,9 +2411,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2821,6 +2882,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2834,6 +2896,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2867,13 +2931,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2884,30 +2948,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2924,37 +2987,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2965,15 +3026,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2990,17 +3051,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3013,16 +3073,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3034,9 +3093,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3098,6 +3156,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3108,6 +3168,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3156,8 +3218,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3199,6 +3265,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3340,6 +3408,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3410,6 +3480,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 68aa986a2f..85bd385ba2 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -132,7 +132,7 @@ i32.and i32.eqz if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -158,10 +158,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $1 i32.const 8 i32.ge_u @@ -182,11 +182,11 @@ i32.const 8 i32.add local.set $2 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $1 if local.get $0 @@ -207,7 +207,7 @@ i32.const 1 i32.sub local.set $1 - br $continue|2 + br $while-continue|2 end end else @@ -216,7 +216,7 @@ i32.and i32.eqz if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $1 i32.add @@ -237,10 +237,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $1 i32.const 8 i32.ge_u @@ -256,11 +256,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $1 if local.get $0 @@ -274,7 +274,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -372,7 +372,7 @@ ) (func $~lib/util/number/utoa_simple (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -391,7 +391,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/decimalCount64 (; 8 ;) (param $0 i64) (result i32) @@ -449,7 +449,7 @@ ) (func $~lib/util/number/utoa_simple (; 9 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) - loop $continue|0 + loop $do-continue|0 local.get $1 i64.const 10 i64.div_u @@ -471,7 +471,7 @@ local.tee $1 i64.const 0 i64.ne - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/utoa64 (; 10 ;) (param $0 i64) (result i32) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index a90f713604..5bd9c2de2e 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -125,6 +125,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -143,39 +145,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -183,13 +187,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -230,9 +234,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -389,13 +392,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -470,9 +473,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -511,13 +513,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -592,9 +594,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -619,13 +620,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -700,9 +701,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -1172,6 +1172,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1185,6 +1186,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1218,13 +1221,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1235,30 +1238,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -1275,37 +1277,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -1316,15 +1316,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1341,17 +1341,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -1364,16 +1363,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -1385,9 +1383,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -1457,6 +1454,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) @@ -1531,50 +1530,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 624 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -1584,15 +1586,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -1601,30 +1602,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -1641,13 +1642,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -1657,13 +1658,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -1742,77 +1743,78 @@ ) (func $~lib/util/number/utoa64_lut (; 12 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) (local $13 i64) + (local $14 i64) i32.const 624 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + local.set $4 + local.get $4 + if local.get $1 i64.const 100000000 i64.div_u - local.set $4 + local.set $5 local.get $1 - local.get $4 + local.get $5 i64.const 100000000 i64.mul i64.sub i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u local.set $6 local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 + local.set $1 local.get $6 - i32.const 100 + i32.const 10000 i32.div_u - local.set $8 + local.set $7 local.get $6 - i32.const 100 + i32.const 10000 i32.rem_u - local.set $9 + local.set $8 local.get $7 i32.const 100 i32.div_u - local.set $10 + local.set $9 local.get $7 i32.const 100 i32.rem_u + local.set $10 + local.get $8 + i32.const 100 + i32.div_u local.set $11 + local.get $8 + i32.const 100 + i32.rem_u + local.set $12 local.get $3 - local.get $10 + local.get $11 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -1822,26 +1824,26 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store local.get $3 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -1851,15 +1853,14 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.get $1 @@ -1905,6 +1906,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -1925,6 +1928,8 @@ local.set $7 local.get $3 local.set $4 + i32.const 0 + drop local.get $5 local.get $7 local.get $4 @@ -1934,6 +1939,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 14 ;) (param $0 i64) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 call $~lib/util/number/utoa64 return @@ -2033,6 +2044,8 @@ local.set $4 local.get $1 local.set $3 + i32.const 0 + drop local.get $5 local.get $4 local.get $3 @@ -2041,6 +2054,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 22 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/utoa32 return diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index a3b73b3b95..bad6cbd205 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -93,7 +93,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -114,20 +114,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -140,18 +138,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -325,7 +321,7 @@ ) (func $~lib/util/number/utoa_simple (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -344,7 +340,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 9 ;) (param $0 i32) (result i32) @@ -426,7 +422,7 @@ i32.const 1476 i32.load local.set $13 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -584,81 +580,83 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $13 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $13 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return + br $while-continue|0 end end - loop $continue|3 (result i32) + loop $while-continue|4 (result i32) local.get $5 i64.const 10 i64.mul @@ -705,7 +703,7 @@ local.tee $12 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 local.get $4 global.get $~lib/util/number/_K i32.add @@ -733,7 +731,7 @@ local.tee $2 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -771,7 +769,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $2 @@ -802,7 +800,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -828,10 +826,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -852,11 +850,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -877,7 +875,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -889,7 +887,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -910,10 +908,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -929,11 +927,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -947,7 +945,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1105,34 +1103,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index d741658b3a..b9f536fb11 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -108,6 +108,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -126,6 +127,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -142,15 +145,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -167,39 +170,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -210,17 +215,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -457,6 +461,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -474,50 +480,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 640 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -527,15 +536,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -544,30 +552,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -584,13 +592,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -600,13 +608,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -651,6 +659,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -665,6 +675,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -717,6 +733,8 @@ (local $42 i32) (local $43 i64) (local $44 i64) + i32.const 1 + drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -1619,14 +1637,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -1664,13 +1685,13 @@ i32.const 8160 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -1684,44 +1705,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -1730,7 +1751,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -1740,7 +1761,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -1750,7 +1771,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -1760,7 +1781,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -1770,7 +1791,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -1780,7 +1801,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -1790,7 +1811,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -1800,7 +1821,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -1810,7 +1831,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -1818,31 +1839,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -1859,8 +1880,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -1869,13 +1890,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -1885,266 +1906,270 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub + local.get $22 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 local.get $22 - local.get $20 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 + local.set $13 + local.get $5 + i64.const 10 + i64.mul + local.set $5 + local.get $13 + local.get $7 + i64.extend_i32_s + i64.shr_u local.set $24 + local.get $24 local.get $15 - local.set $18 - local.get $5 - local.set $23 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/memory/memcpy (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2152,13 +2177,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2199,9 +2224,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2358,13 +2382,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2439,9 +2463,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2480,13 +2503,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2561,9 +2584,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2588,13 +2610,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2669,9 +2691,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3141,6 +3162,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3154,6 +3176,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3187,13 +3211,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3204,30 +3228,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3244,37 +3267,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3285,15 +3306,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3310,17 +3331,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3333,16 +3353,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3354,9 +3373,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3411,6 +3429,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -3519,6 +3539,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -3549,41 +3571,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -3629,8 +3653,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -3641,24 +3665,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -4229,6 +4255,8 @@ i32.const 16 i32.sub local.set $1 + i32.const 1 + drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index 4f3e9f8ca0..be5d5ac7cc 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -347,7 +347,7 @@ i32.const 1460 i32.load local.set $13 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -505,81 +505,83 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $13 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $13 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return + br $while-continue|0 end end - loop $continue|3 (result i32) + loop $while-continue|4 (result i32) local.get $5 i64.const 10 i64.mul @@ -626,7 +628,7 @@ local.tee $12 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 local.get $4 global.get $~lib/util/number/_K i32.add @@ -654,7 +656,7 @@ local.tee $2 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -692,7 +694,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $2 @@ -723,7 +725,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -749,10 +751,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -773,11 +775,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -798,7 +800,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -810,7 +812,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -831,10 +833,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -850,11 +852,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -868,7 +870,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -876,7 +878,7 @@ ) (func $~lib/util/number/utoa_simple (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -895,7 +897,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/prettify (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -1050,34 +1052,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -1627,7 +1629,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -1648,20 +1650,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -1674,18 +1674,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 8f79692511..2376b590f9 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -148,6 +148,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -166,6 +168,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -173,6 +176,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -384,13 +389,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -417,9 +422,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -661,14 +665,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -706,13 +713,13 @@ i32.const 1456 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -726,44 +733,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -772,7 +779,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -782,7 +789,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -792,7 +799,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -802,7 +809,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -812,7 +819,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -822,7 +829,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -832,7 +839,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -842,7 +849,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -852,7 +859,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -860,31 +867,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -901,8 +908,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -911,13 +918,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -927,266 +934,270 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub + local.get $22 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 local.get $22 - local.get $20 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/memory/memcpy (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1194,13 +1205,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1241,9 +1252,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -1400,13 +1410,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -1481,9 +1491,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -1522,13 +1531,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -1603,9 +1612,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -1630,13 +1638,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -1711,9 +1719,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2183,6 +2190,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2196,6 +2204,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2229,13 +2239,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2246,30 +2256,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2286,37 +2295,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2327,15 +2334,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2352,17 +2359,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2375,16 +2381,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -2396,9 +2401,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -2409,50 +2413,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 1904 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -2462,15 +2469,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -2479,30 +2485,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -2519,13 +2525,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -2535,13 +2541,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -2595,6 +2601,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -2703,6 +2711,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -2733,41 +2743,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -2813,8 +2825,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -2825,24 +2837,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -3421,6 +3435,8 @@ i32.const 16 i32.sub local.set $1 + i32.const 1 + drop local.get $1 i32.load offset=4 i32.const 1 @@ -3517,6 +3533,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -3535,6 +3552,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -3551,15 +3570,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -3576,39 +3595,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -3619,17 +3640,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 3a2020bf8b..a7e2432951 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -167,7 +167,7 @@ ) (func $~lib/util/number/utoa_simple (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -186,7 +186,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 8 ;) (param $0 i32) (result i32) @@ -253,7 +253,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $2 @@ -274,20 +274,18 @@ local.tee $1 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $1 - local.tee $3 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $1 + local.tee $3 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -300,18 +298,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index e483ecb1b4..73c29e7e1f 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -199,6 +199,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -216,50 +218,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 560 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -269,15 +274,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -286,30 +290,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -326,13 +330,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -342,13 +346,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -396,6 +400,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -410,6 +416,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 10 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -435,6 +447,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -453,6 +466,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -469,15 +484,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -494,39 +509,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -537,17 +554,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 4dd064abbb..a058ae096d 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -107,6 +107,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index e309fefac1..a86c2f593f 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -161,7 +161,7 @@ ) (func $~lib/util/number/utoa_simple (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -180,7 +180,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 5 ;) (param $0 i32) (result i32) @@ -249,7 +249,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -270,20 +270,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -296,18 +294,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 44baa9b658..8356712c9b 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -200,6 +200,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -217,50 +219,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 480 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -270,15 +275,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -287,30 +291,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -327,13 +331,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -343,13 +347,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -397,6 +401,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -411,6 +417,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -436,6 +448,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -454,6 +467,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -470,15 +485,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -495,39 +510,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -538,17 +555,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 27be4f2619..ecce2a5d2c 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -1429,7 +1429,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1455,10 +1455,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1479,11 +1479,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1504,7 +1504,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1516,7 +1516,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1537,10 +1537,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1556,11 +1556,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1574,7 +1574,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1812,7 +1812,7 @@ ) (func $~lib/util/number/utoa_simple (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -1831,7 +1831,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/string/String#get:length (; 28 ;) (param $0 i32) (result i32) @@ -1859,7 +1859,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -1880,20 +1880,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -1906,18 +1904,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -1997,7 +1993,7 @@ i32.const 1620 i32.load local.set $12 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -2155,80 +2151,82 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $12 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $0 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $12 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $2 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.tee $8 - local.get $9 - i64.sub - i64.gt_u - local.get $8 - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $0 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.tee $8 + local.get $9 + i64.sub + i64.gt_u + local.get $8 + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $0 + local.get $4 + i32.store16 + local.get $2 + return end - local.get $0 - local.get $4 - i32.store16 - local.get $2 - return + br $while-continue|0 end end - loop $continue|3 + loop $while-continue|4 local.get $5 i64.const 10 i64.mul @@ -2275,7 +2273,7 @@ local.tee $8 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 end local.get $4 global.get $~lib/util/number/_K @@ -2304,7 +2302,7 @@ local.tee $0 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -2341,7 +2339,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $0 @@ -2501,34 +2499,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index e84e966b76..6b601e1ac3 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -81,6 +81,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -99,6 +101,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -151,6 +155,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -290,6 +296,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -303,6 +311,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -396,6 +406,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -452,6 +464,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -471,6 +485,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -525,6 +541,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -635,6 +653,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -672,6 +692,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -703,6 +725,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -786,6 +810,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -845,50 +871,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1008,6 +1038,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1080,6 +1112,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1184,6 +1218,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1284,6 +1320,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1296,20 +1333,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1318,23 +1357,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1343,11 +1382,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1370,6 +1409,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1387,19 +1428,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1502,6 +1545,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1593,6 +1638,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1616,9 +1663,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1635,6 +1686,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1654,6 +1707,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1666,6 +1721,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1694,6 +1751,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1737,6 +1796,10 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1793,39 +1856,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1833,13 +1898,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1880,9 +1945,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2039,13 +2103,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2120,9 +2184,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2161,13 +2224,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2242,9 +2305,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2269,13 +2331,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2350,9 +2412,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2822,6 +2883,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2835,6 +2897,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2868,13 +2932,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2885,30 +2949,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2925,37 +2988,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2966,15 +3027,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2991,17 +3052,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3014,16 +3074,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3035,9 +3094,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3099,13 +3157,17 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - local.get $0 + i32.const 0 + drop + local.get $0 call $~lib/rt/tlsf/__free end local.get $5 @@ -3149,6 +3211,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3190,6 +3256,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3324,50 +3392,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 752 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -3377,15 +3448,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -3394,30 +3464,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -3434,13 +3504,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -3450,13 +3520,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -3501,6 +3571,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -3515,6 +3587,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 30 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -3537,6 +3615,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -3555,6 +3634,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -3571,15 +3652,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -3596,39 +3677,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $10 return end local.get $5 @@ -3639,17 +3722,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 34 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3755,14 +3837,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -3800,13 +3885,13 @@ i32.const 2064 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -3820,44 +3905,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -3866,7 +3951,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -3876,7 +3961,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -3886,7 +3971,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -3896,7 +3981,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -3906,7 +3991,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -3916,7 +4001,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -3926,7 +4011,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -3936,7 +4021,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -3946,7 +4031,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -3954,31 +4039,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -3995,8 +4080,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -4005,13 +4090,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -4021,228 +4106,230 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub + local.get $22 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 local.get $22 - local.get $20 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/number/prettify (; 38 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -4294,6 +4381,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -4402,6 +4491,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -4432,41 +4523,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -4512,8 +4605,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -4524,24 +4617,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -5285,13 +5380,16 @@ call $start:resolve-ternary ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 50 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 51 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -5341,6 +5439,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -5411,6 +5511,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 3b8b0abc9c..0eb1f63845 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -169,7 +169,7 @@ ) (func $~lib/util/number/utoa_simple (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -188,7 +188,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 5 ;) (param $0 i32) (result i32) @@ -257,7 +257,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -278,20 +278,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -304,18 +302,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 131b765614..ac0cdc9972 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -199,6 +199,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -216,50 +218,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 480 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -269,15 +274,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -286,30 +290,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -326,13 +330,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -342,13 +346,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -396,6 +400,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -410,6 +416,12 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -435,6 +447,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -453,6 +466,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -469,15 +484,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -494,39 +509,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -537,17 +554,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 12 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index a6e0613536..e72e098c2d 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -338,6 +338,7 @@ ) (func $start:retain-i32 (; 3 ;) (local $0 i32) + (local $1 i32) i32.const 0 global.get $~lib/builtins/i8.MAX_VALUE call $retain-i32/test @@ -413,6 +414,8 @@ local.get $0 i32.const 255 i32.le_s + local.set $1 + local.get $1 if i32.const 0 local.get $0 diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 009252ddfb..77f9e048b0 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -1499,7 +1499,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -1530,7 +1530,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -1630,7 +1630,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1656,10 +1656,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1680,11 +1680,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1705,7 +1705,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1717,7 +1717,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1738,10 +1738,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1757,11 +1757,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1775,7 +1775,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2408,19 +2408,19 @@ call $~lib/rt/pure/__retain i32.const 3 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 3 i32.store offset=12 - local.get $0 + local.get $1 call $~lib/array/Array#push - local.get $0 + local.get $1 call $~lib/array/Array#push - local.get $0 + local.get $1 call $~lib/array/Array#pop - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 16 i32.const 5 @@ -2428,14 +2428,14 @@ call $~lib/rt/pure/__retain i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.tee $0 + local.tee $1 i32.const 0 i32.store offset=12 - local.get $0 + local.get $1 i32.const 0 i32.store offset=12 loop $for-loop|0 - local.get $1 + local.get $0 i32.const 10 i32.lt_s if @@ -2469,14 +2469,14 @@ end local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 + local.set $0 br $for-loop|0 end end - local.get $0 + local.get $1 call $~lib/rt/pure/__release i32.const 528 i32.const 560 @@ -2491,10 +2491,10 @@ i32.const 6 call $~lib/rt/tlsf/__alloc call $~lib/rt/pure/__retain - local.tee $0 + local.tee $1 i32.const 0 i32.store - local.get $0 + local.get $1 i32.const 4 i32.const 7 call $~lib/rt/tlsf/__alloc @@ -2503,104 +2503,101 @@ i32.const 0 i32.store local.get $3 - local.tee $4 - local.get $0 + local.tee $0 + local.get $1 i32.load - local.tee $1 + local.tee $2 i32.ne if - local.get $4 + local.get $0 call $~lib/rt/pure/__retain - local.set $4 - local.get $1 + local.set $0 + local.get $2 call $~lib/rt/pure/__release end - local.get $4 + local.get $0 i32.store local.get $3 - local.tee $1 - local.get $0 - local.tee $4 - i32.load local.tee $2 + local.get $1 + local.tee $0 + i32.load + local.tee $4 i32.ne if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 - local.get $1 - i32.store - local.get $3 - local.set $2 local.get $0 + local.get $2 + i32.store + local.get $1 local.get $3 + local.tee $2 i32.load - local.tee $1 + local.tee $4 i32.ne if - local.get $4 + local.get $0 call $~lib/rt/pure/__retain - local.set $4 - local.get $1 + local.set $0 + local.get $4 call $~lib/rt/pure/__release end local.get $2 - local.get $4 - i32.store local.get $0 - local.tee $1 + i32.store + local.get $1 + local.tee $0 local.get $2 i32.load local.tee $4 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $4 call $~lib/rt/pure/__release end local.get $2 - local.get $1 + local.get $0 i32.store - local.get $2 - local.set $4 local.get $3 - local.get $0 - local.tee $1 + local.get $1 + local.tee $0 i32.load - local.tee $2 + local.tee $4 i32.ne if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $4 call $~lib/rt/pure/__release end - local.get $1 - local.get $4 - i32.store local.get $0 + local.get $2 + i32.store + local.get $1 local.get $3 i32.load local.tee $2 i32.ne if - local.get $1 + local.get $0 call $~lib/rt/pure/__retain - local.set $1 + local.set $0 local.get $2 call $~lib/rt/pure/__release end local.get $3 - local.get $1 - i32.store local.get $0 + i32.store + local.get $1 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -2724,7 +2721,7 @@ i32.shl i32.add local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $0 i32.lt_u @@ -2741,7 +2738,7 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 616035213b..2975bc7cd8 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -55,6 +55,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -73,6 +75,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -125,6 +129,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -264,6 +270,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -277,6 +285,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -370,6 +380,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -426,6 +438,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -445,6 +459,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -499,6 +515,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -609,6 +627,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -646,6 +666,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -677,6 +699,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -760,6 +784,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -819,50 +845,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -982,6 +1012,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1054,6 +1086,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1158,6 +1192,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1260,6 +1296,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1272,20 +1309,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1294,23 +1333,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1319,11 +1358,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1346,6 +1385,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1363,19 +1404,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1478,6 +1521,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1569,6 +1614,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1592,9 +1639,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1611,6 +1662,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1630,6 +1683,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1642,6 +1697,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1670,6 +1727,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1694,6 +1753,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1701,6 +1761,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1912,13 +1974,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -1945,9 +2007,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -1979,8 +2040,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -2037,39 +2102,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2077,13 +2144,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2124,9 +2191,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2283,13 +2349,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2364,9 +2430,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2405,13 +2470,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2486,9 +2551,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2513,13 +2577,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2594,9 +2658,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3066,6 +3129,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3079,6 +3143,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3112,13 +3178,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3129,30 +3195,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3169,37 +3234,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3210,15 +3273,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3235,17 +3298,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3258,16 +3320,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3279,9 +3340,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3343,6 +3403,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3353,6 +3415,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3401,8 +3465,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3444,6 +3512,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3613,6 +3683,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -3738,6 +3810,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -3850,6 +3924,8 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $2 @@ -3958,6 +4034,8 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $2 @@ -4119,6 +4197,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 0 i32.const 3 call $~lib/array/Array#constructor @@ -4146,30 +4225,34 @@ local.get $1 i32.const 10 i32.lt_s + local.set $2 + local.get $2 if i32.const 0 i32.const 0 call $~lib/array/Array<~lib/string/String>#constructor - local.set $2 - i32.const 0 local.set $3 + i32.const 0 + local.set $4 loop $for-loop|1 - local.get $3 + local.get $4 i32.const 10 i32.lt_s + local.set $5 + local.get $5 if - local.get $2 + local.get $3 i32.const 512 call $~lib/array/Array<~lib/string/String>#push drop - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $2 + local.get $3 call $~lib/rt/pure/__release local.get $1 i32.const 1 @@ -4210,19 +4293,19 @@ local.get $3 local.tee $1 local.get $2 - local.tee $0 + local.tee $5 local.get $1 i32.load - local.tee $4 + local.tee $0 i32.ne if - local.get $0 + local.get $5 call $~lib/rt/pure/__retain - local.set $0 - local.get $4 + local.set $5 + local.get $0 call $~lib/rt/pure/__release end - local.get $0 + local.get $5 i32.store local.get $3 local.tee $1 @@ -4230,13 +4313,13 @@ local.tee $4 local.get $1 i32.load - local.tee $0 + local.tee $5 i32.ne if local.get $4 call $~lib/rt/pure/__retain local.set $4 - local.get $0 + local.get $5 call $~lib/rt/pure/__release end local.get $4 @@ -4261,53 +4344,53 @@ local.get $2 local.tee $1 local.get $3 - local.tee $4 + local.tee $5 local.get $1 i32.load local.tee $0 i32.ne if - local.get $4 + local.get $5 call $~lib/rt/pure/__retain - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release end - local.get $4 + local.get $5 i32.store local.get $3 local.tee $1 local.get $2 - local.tee $0 + local.tee $4 local.get $1 i32.load - local.tee $4 + local.tee $5 i32.ne if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 local.get $4 + call $~lib/rt/pure/__retain + local.set $4 + local.get $5 call $~lib/rt/pure/__release end - local.get $0 + local.get $4 i32.store local.get $2 local.tee $1 local.get $3 - local.tee $4 + local.tee $0 local.get $1 i32.load - local.tee $0 + local.tee $4 i32.ne if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $4 call $~lib/rt/pure/__release end - local.get $4 + local.get $0 i32.store local.get $3 call $~lib/rt/pure/__release @@ -4319,7 +4402,8 @@ call $start:retain-release-sanity ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 50 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -4369,6 +4453,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4439,6 +4525,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -4455,6 +4543,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -4465,19 +4556,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -4485,15 +4576,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -4504,19 +4597,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -4524,9 +4617,8 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/rt/__visit_members (; 53 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index 586ac21e14..bab147d45b 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -153,6 +153,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -495,42 +497,48 @@ ) (func $retain-release/scopeWhile (; 28 ;) (param $0 i32) (local $1 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + (local $2 i32) + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + local.set $2 + local.get $2 call $~lib/rt/stub/__release - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $retain-release/scopeDo (; 29 ;) (param $0 i32) (local $1 i32) - loop $continue|0 + (local $2 i32) + loop $do-continue|0 global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $1 local.get $1 call $~lib/rt/stub/__release local.get $0 - br_if $continue|0 + local.set $2 + local.get $2 + br_if $do-continue|0 end ) (func $retain-release/scopeFor (; 30 ;) (param $0 i32) (local $1 i32) + (local $2 i32) loop $for-loop|0 local.get $0 + local.set $1 + local.get $1 if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + local.set $2 + local.get $2 call $~lib/rt/stub/__release br $for-loop|0 end @@ -542,45 +550,51 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) i32.const 0 local.set $1 loop $for-loop|0 local.get $0 + local.set $2 + local.get $2 if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $2 - i32.const 0 local.set $3 + i32.const 0 + local.set $4 loop $for-loop|1 local.get $0 + local.set $5 + local.get $5 if block $for-continue|1 global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $4 + local.set $6 local.get $0 if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $5 - local.get $5 + local.set $7 + local.get $7 call $~lib/rt/stub/__release - local.get $4 + local.get $6 call $~lib/rt/stub/__release br $for-continue|1 end - local.get $4 + local.get $6 call $~lib/rt/stub/__release end - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 br $for-loop|1 end end - local.get $2 + local.get $3 call $~lib/rt/stub/__release local.get $1 i32.const 1 @@ -591,129 +605,142 @@ end ) (func $retain-release/scopeBreak (; 32 ;) (param $0 i32) - (local $1 i32) - block $break|0 - local.get $0 - i32.eqz - br_if $break|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain - local.set $1 - local.get $1 - call $~lib/rt/stub/__release - br $break|0 - end - ) - (func $retain-release/scopeBreakNested (; 33 ;) (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - loop $continue|0 + block $while-break|0 + loop $while-continue|0 local.get $0 - i32.eqz - br_if $break|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain local.set $1 - block $break|1 - local.get $0 - i32.eqz - br_if $break|1 + local.get $1 + if global.get $retain-release/REF call $~lib/rt/stub/__retain local.set $2 local.get $2 call $~lib/rt/stub/__release - br $break|1 + br $while-break|0 end - local.get $1 + end + end + ) + (func $retain-release/scopeBreakNested (; 33 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $2 + block $while-break|1 + loop $while-continue|1 + local.get $0 + local.set $3 + local.get $3 + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $4 + local.get $4 + call $~lib/rt/stub/__release + br $while-break|1 + end + end + end + local.get $2 call $~lib/rt/stub/__release - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $retain-release/scopeContinue (; 34 ;) (param $0 i32) (local $1 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + (local $2 i32) + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $1 - local.get $1 + local.set $2 + local.get $2 call $~lib/rt/stub/__release - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $retain-release/scopeContinueNested (; 35 ;) (param $0 i32) (local $1 i32) (local $2 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + (local $3 i32) + (local $4 i32) + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $1 - block $break|1 - loop $continue|1 - local.get $0 - i32.eqz - br_if $break|1 + local.set $2 + loop $while-continue|1 + local.get $0 + local.set $3 + local.get $3 + if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $2 - local.get $2 + local.set $4 + local.get $4 call $~lib/rt/stub/__release - br $continue|1 + br $while-continue|1 end - unreachable end - local.get $1 + local.get $2 call $~lib/rt/stub/__release - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $retain-release/scopeThrow (; 36 ;) (param $0 i32) (local $1 i32) - block $break|0 + (local $2 i32) + loop $while-continue|0 local.get $0 - i32.eqz - br_if $break|0 - global.get $retain-release/REF - call $~lib/rt/stub/__retain local.set $1 local.get $1 - call $~lib/rt/stub/__release - i32.const 32 - i32.const 64 - i32.const 367 - i32.const 4 - call $~lib/builtins/abort - unreachable + if + global.get $retain-release/REF + call $~lib/rt/stub/__retain + local.set $2 + local.get $2 + call $~lib/rt/stub/__release + i32.const 32 + i32.const 64 + i32.const 367 + i32.const 4 + call $~lib/builtins/abort + unreachable + end end ) (func $retain-release/scopeUnreachable (; 37 ;) (param $0 i32) (local $1 i32) - block $break|0 - loop $continue|0 - local.get $0 - i32.eqz - br_if $break|0 + (local $2 i32) + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if global.get $retain-release/REF call $~lib/rt/stub/__retain - local.set $1 + local.set $2 unreachable end - unreachable end ) (func $retain-release/callInline (; 38 ;) diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index 0c95307d15..45da07e4b5 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -1408,7 +1408,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1434,10 +1434,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1458,11 +1458,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1483,7 +1483,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1495,7 +1495,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1516,10 +1516,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1535,11 +1535,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1553,7 +1553,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 49e3d42fe5..650352a9fc 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -52,6 +52,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -70,6 +72,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -122,6 +126,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -261,6 +267,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -274,6 +282,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -367,6 +377,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -423,6 +435,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -442,6 +456,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -496,6 +512,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -606,6 +624,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -643,6 +663,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -674,6 +696,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -757,6 +781,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -816,50 +842,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -979,6 +1009,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1051,6 +1083,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1155,6 +1189,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1255,6 +1291,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1267,20 +1304,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1289,23 +1328,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1314,11 +1353,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1341,6 +1380,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1358,19 +1399,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1473,6 +1516,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1564,6 +1609,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1587,9 +1634,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1606,6 +1657,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1625,6 +1678,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1637,6 +1692,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1665,6 +1722,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1708,6 +1767,10 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1780,39 +1843,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1820,13 +1885,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1867,9 +1932,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2026,13 +2090,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2107,9 +2171,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2148,13 +2211,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2229,9 +2292,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2256,13 +2318,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2337,9 +2399,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2809,6 +2870,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2822,6 +2884,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2855,13 +2919,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2872,30 +2936,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2912,37 +2975,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2953,15 +3014,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2978,17 +3039,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3001,16 +3061,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3022,9 +3081,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3086,12 +3144,16 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if + i32.const 0 + drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3136,6 +3198,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3177,6 +3243,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3432,6 +3500,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3502,6 +3572,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index f6ad5c9372..6f1c0cc5b3 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -125,7 +125,7 @@ i32.load i32.le_u if - loop $continue|0 + loop $do-continue|0 local.get $0 local.get $1 i32.eq @@ -140,7 +140,7 @@ i32.add i32.load offset=4 local.tee $0 - br_if $continue|0 + br_if $do-continue|0 end end i32.const 0 diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index c13b0ba7aa..fa3d4eeb68 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -121,6 +121,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -180,6 +182,7 @@ (func $~lib/rt/__instanceof (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 i32.const 16 i32.sub @@ -192,7 +195,7 @@ i32.load i32.le_u if - loop $continue|0 + loop $do-continue|0 local.get $2 local.get $1 i32.eq @@ -209,7 +212,9 @@ i32.add i32.load offset=4 local.tee $2 - br_if $continue|0 + local.set $4 + local.get $4 + br_if $do-continue|0 end end i32.const 0 diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index 13de19fe23..baa675412d 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -142,7 +142,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -168,10 +168,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -192,11 +192,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -217,7 +217,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -229,7 +229,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -250,10 +250,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -269,11 +269,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -287,7 +287,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index d4ac31ca90..f790964553 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -123,6 +123,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -147,39 +149,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -187,13 +191,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -234,9 +238,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -393,13 +396,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -474,9 +477,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -515,13 +517,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -596,9 +598,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -623,13 +624,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -704,9 +705,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -1176,6 +1176,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1189,6 +1190,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1222,13 +1225,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1239,30 +1242,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -1279,37 +1281,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -1320,15 +1320,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1345,17 +1345,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -1368,16 +1367,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -1389,9 +1387,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -1430,6 +1427,8 @@ local.get $2 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 1 @@ -1545,6 +1544,8 @@ i32.const 16 i32.sub local.set $1 + i32.const 1 + drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/runtime-full.optimized.wat b/tests/compiler/runtime-full.optimized.wat index 96e7d83cf4..aab55c7b60 100644 --- a/tests/compiler/runtime-full.optimized.wat +++ b/tests/compiler/runtime-full.optimized.wat @@ -1404,7 +1404,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1430,10 +1430,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1454,11 +1454,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1479,7 +1479,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1491,7 +1491,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1512,10 +1512,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1531,11 +1531,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1549,7 +1549,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index 8d1d14f017..050db1418b 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -46,6 +46,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -64,6 +66,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -116,6 +120,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -255,6 +261,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -268,6 +276,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -361,6 +371,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -417,6 +429,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -436,6 +450,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -490,6 +506,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -600,6 +618,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -637,6 +657,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -668,6 +690,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -751,6 +775,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -810,50 +836,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -973,6 +1003,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1045,6 +1077,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1149,6 +1183,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1249,6 +1285,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1261,20 +1298,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1283,23 +1322,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1308,11 +1347,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1335,6 +1374,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1352,19 +1393,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1467,6 +1510,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1558,6 +1603,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1581,9 +1628,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1600,6 +1651,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1619,6 +1672,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1631,6 +1686,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1659,6 +1716,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1702,6 +1761,10 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1758,39 +1821,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1798,13 +1863,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1845,9 +1910,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2004,13 +2068,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2085,9 +2149,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2126,13 +2189,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2207,9 +2270,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2234,13 +2296,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2315,9 +2377,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2787,6 +2848,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2800,6 +2862,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2833,13 +2897,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2850,30 +2914,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2890,37 +2953,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2931,15 +2992,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2956,17 +3017,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -2979,16 +3039,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3000,9 +3059,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3064,12 +3122,16 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if + i32.const 0 + drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3114,6 +3176,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3155,6 +3221,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3265,6 +3333,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3335,6 +3405,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index ec8390a863..774cd2aa2a 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -113,6 +113,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index 0087280b07..a29646b6ed 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -18,14 +18,17 @@ (func $start:scoped (; 1 ;) (local $0 i32) (local $1 i32) - (local $2 i64) - (local $3 f32) + (local $2 i32) + (local $3 i64) + (local $4 f32) i32.const 0 local.set $0 loop $for-loop|0 local.get $0 i32.const 1 i32.lt_s + local.set $1 + local.get $1 if nop local.get $0 @@ -41,6 +44,8 @@ local.get $1 i32.const 1 i32.lt_s + local.set $2 + local.get $2 if local.get $1 drop @@ -52,9 +57,9 @@ end end i64.const 5 - local.set $2 - f32.const 10 local.set $3 + f32.const 10 + local.set $4 i32.const 42 call $scoped/fn ) diff --git a/tests/compiler/std/array-access.optimized.wat b/tests/compiler/std/array-access.optimized.wat index 3fbdb0e3c1..6aaa67dcd0 100644 --- a/tests/compiler/std/array-access.optimized.wat +++ b/tests/compiler/std/array-access.optimized.wat @@ -107,7 +107,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $1 i64.load local.get $3 @@ -128,20 +128,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $0 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $0 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + if local.get $1 i32.load16_u local.tee $0 @@ -154,18 +152,16 @@ local.get $4 i32.sub return - else - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $3 - i32.const 2 - i32.add - local.set $3 - br $continue|1 end - unreachable + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $3 + i32.const 2 + i32.add + local.set $3 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 9cb2a85abe..5fccfcf687 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -54,6 +54,10 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -95,6 +99,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/array-access/i32ArrayArrayElementAccess (; 7 ;) (param $0 i32) (result i32) @@ -144,6 +150,10 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -190,6 +200,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -208,6 +219,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -224,15 +237,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -249,39 +262,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -292,17 +307,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String#startsWith (; 13 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -427,6 +441,10 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 339119d745..bdeaad1624 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -1442,7 +1442,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1468,10 +1468,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1492,11 +1492,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1517,7 +1517,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1529,7 +1529,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1550,10 +1550,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1569,11 +1569,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1587,7 +1587,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2318,7 +2318,7 @@ i32.shl i32.add local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $0 i32.lt_u @@ -2335,7 +2335,7 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 963fc4f402..c1bcf5390b 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -80,6 +80,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#get:length (; 8 ;) (param $0 i32) (result i32) @@ -113,6 +115,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/rt/tlsf/removeBlock (; 11 ;) (param $0 i32) (param $1 i32) @@ -129,6 +133,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -147,6 +153,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -199,6 +207,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -338,6 +348,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -351,6 +363,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -444,6 +458,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -500,6 +516,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -519,6 +537,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -573,6 +593,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -683,6 +705,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -720,6 +744,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -751,6 +777,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -834,6 +862,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -893,50 +923,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1056,6 +1090,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1128,6 +1164,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1232,6 +1270,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1334,6 +1374,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1346,20 +1387,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1368,23 +1411,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1393,11 +1436,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1420,6 +1463,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1437,19 +1482,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1552,6 +1599,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1643,6 +1692,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1666,9 +1717,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1685,6 +1740,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1704,6 +1761,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1716,6 +1775,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1744,6 +1805,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1789,8 +1852,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1822,39 +1889,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1862,13 +1931,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1909,9 +1978,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2068,13 +2136,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2149,9 +2217,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2190,13 +2257,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2271,9 +2338,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2298,13 +2364,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2379,9 +2445,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2851,6 +2916,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2864,6 +2930,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2897,13 +2965,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2914,30 +2982,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2954,37 +3021,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2995,15 +3060,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3020,17 +3085,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3043,16 +3107,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3064,9 +3127,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3223,6 +3285,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3233,6 +3297,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3281,8 +3347,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3324,6 +3394,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3801,10 +3873,12 @@ call $start:std/array-literal ) (func $~lib/array/Array#__visit_impl (; 44 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 46 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3854,6 +3928,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3924,6 +4000,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -3940,6 +4018,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -3950,19 +4031,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -3970,15 +4051,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array#__visit_impl (; 48 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -3989,19 +4072,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -4009,9 +4092,8 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/rt/__visit_members (; 49 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index a5001f1dd9..72091d858c 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -1721,7 +1721,7 @@ i64.shl i64.or local.set $4 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u @@ -1752,7 +1752,7 @@ i32.const 32 i32.add local.set $1 - br $continue|0 + br $while-continue|0 end end end @@ -1852,7 +1852,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1878,10 +1878,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1902,11 +1902,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1927,7 +1927,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1939,7 +1939,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1960,10 +1960,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1979,11 +1979,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1997,7 +1997,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2893,7 +2893,7 @@ i32.shl i32.add local.set $1 - loop $continue|0 + loop $do-continue|0 local.get $2 i32.load call $~lib/rt/pure/__release @@ -2903,7 +2903,7 @@ local.tee $2 local.get $1 i32.lt_u - br_if $continue|0 + br_if $do-continue|0 end else local.get $0 @@ -3163,7 +3163,7 @@ i32.shl i32.add local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $1 i32.lt_u @@ -3186,7 +3186,7 @@ i32.const 4 i32.sub local.set $1 - br $continue|0 + br $while-continue|0 end end end @@ -3227,7 +3227,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -3243,14 +3243,12 @@ if local.get $2 return - else - local.get $2 - i32.const 1 - i32.add - local.set $2 - br $continue|0 end - unreachable + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $while-continue|0 end end i32.const -1 @@ -3275,7 +3273,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -3291,14 +3289,12 @@ if local.get $1 return - else - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $continue|0 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 end end i32.const -1 @@ -3323,7 +3319,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -3339,14 +3335,12 @@ if local.get $1 return - else - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $continue|0 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 end end i32.const -1 @@ -3380,7 +3374,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -3404,14 +3398,12 @@ if i32.const 1 return - else - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $continue|0 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 end end i32.const 0 @@ -3437,7 +3429,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -3461,14 +3453,12 @@ if i32.const 1 return - else - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $continue|0 end - unreachable + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 end end i32.const 0 @@ -4707,42 +4697,43 @@ i32.const 1 i32.sub local.set $2 - loop $continue|1 - block $break|1 - local.get $2 - i32.const 0 - i32.lt_s - br_if $break|1 - local.get $0 - local.get $2 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $5 - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - call $~lib/util/sort/COMPARATOR~anonymous|0 - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $5 - f32.store - br $continue|1 + loop $while-continue|1 + local.get $2 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $2 + i32.const 2 + i32.shl + i32.add + f32.load + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + call $~lib/util/sort/COMPARATOR~anonymous|0 + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $2 + local.tee $6 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $5 + f32.store + br $while-continue|1 + end end end local.get $0 @@ -4794,7 +4785,7 @@ if local.get $3 local.set $2 - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 1 i32.and @@ -4820,7 +4811,7 @@ i32.const 1 i32.shr_s local.set $2 - br $continue|1 + br $while-continue|1 end end local.get $0 @@ -4913,7 +4904,7 @@ f32.store i32.const 1 local.set $1 - loop $continue|3 + loop $while-continue|3 local.get $5 local.get $1 i32.const 5 @@ -4938,10 +4929,10 @@ if local.get $2 local.set $1 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $1 i32.const 0 i32.gt_s @@ -4996,7 +4987,7 @@ i32.const 1 i32.shr_s local.set $1 - br $continue|4 + br $while-continue|4 end end local.get $3 @@ -5197,42 +5188,43 @@ i32.const 1 i32.sub local.set $2 - loop $continue|1 - block $break|1 - local.get $2 - i32.const 0 - i32.lt_s - br_if $break|1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - call $~lib/util/sort/COMPARATOR~anonymous|0 - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - br $continue|1 + loop $while-continue|1 + local.get $2 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + call $~lib/util/sort/COMPARATOR~anonymous|0 + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $2 + local.tee $6 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + br $while-continue|1 + end end end local.get $0 @@ -5284,7 +5276,7 @@ if local.get $3 local.set $2 - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 1 i32.and @@ -5310,7 +5302,7 @@ i32.const 1 i32.shr_s local.set $2 - br $continue|1 + br $while-continue|1 end end local.get $0 @@ -5403,7 +5395,7 @@ f64.store i32.const 1 local.set $1 - loop $continue|3 + loop $while-continue|3 local.get $5 local.get $1 i32.const 5 @@ -5428,10 +5420,10 @@ if local.get $2 local.set $1 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $1 i32.const 0 i32.gt_s @@ -5486,7 +5478,7 @@ i32.const 1 i32.shr_s local.set $1 - br $continue|4 + br $while-continue|4 end end local.get $3 @@ -5708,43 +5700,44 @@ i32.const 1 i32.sub local.set $3 - loop $continue|1 - block $break|1 - local.get $3 - i32.const 0 - i32.lt_s - br_if $break|1 - local.get $0 - local.get $3 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $5 - local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $3 - local.tee $7 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - local.get $7 - i32.const 1 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store - br $continue|1 + loop $while-continue|1 + local.get $3 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load + local.set $6 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $6 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $3 + local.tee $7 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.get $7 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store + br $while-continue|1 + end end end local.get $0 @@ -5796,7 +5789,7 @@ if local.get $4 local.set $3 - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 1 i32.and @@ -5822,7 +5815,7 @@ i32.const 1 i32.shr_s local.set $3 - br $continue|1 + br $while-continue|1 end end local.get $0 @@ -5916,7 +5909,7 @@ i32.store i32.const 1 local.set $1 - loop $continue|3 + loop $while-continue|3 local.get $5 local.get $1 i32.const 5 @@ -5941,10 +5934,10 @@ if local.get $3 local.set $1 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $1 i32.const 0 i32.gt_s @@ -6000,7 +5993,7 @@ i32.const 1 i32.shr_s local.set $1 - br $continue|4 + br $while-continue|4 end end local.get $4 @@ -6650,7 +6643,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -6671,20 +6664,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -6697,18 +6688,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -7160,7 +7149,7 @@ local.set $3 i32.const 0 local.set $1 - loop $for-loop|0 + loop $for-loop|1 local.get $5 local.get $2 i32.lt_s @@ -7212,7 +7201,7 @@ i32.const 1 i32.add local.set $5 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -7303,7 +7292,7 @@ ) (func $~lib/util/number/utoa_simple (; 160 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -7322,7 +7311,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 161 ;) (param $0 i32) (result i32) @@ -7724,7 +7713,7 @@ i32.const 7060 i32.load local.set $13 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -7882,81 +7871,83 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $13 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $13 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return + br $while-continue|0 end end - loop $continue|3 (result i32) + loop $while-continue|4 (result i32) local.get $5 i64.const 10 i64.mul @@ -8003,7 +7994,7 @@ local.tee $12 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 local.get $4 global.get $~lib/util/number/_K i32.add @@ -8031,7 +8022,7 @@ local.tee $2 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -8069,7 +8060,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $2 @@ -8230,34 +8221,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -8986,11 +8977,11 @@ call $~lib/rt/pure/__retain local.tee $0 local.get $1 + local.get $1 local.get $0 call $~lib/string/String.__concat local.tee $0 local.tee $2 - local.get $1 i32.ne if local.get $2 @@ -9531,7 +9522,7 @@ ) (func $~lib/util/number/utoa_simple (; 185 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) - loop $continue|0 + loop $do-continue|0 local.get $1 i64.const 10 i64.div_u @@ -9553,7 +9544,7 @@ local.tee $1 i64.const 0 i64.ne - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/utoa64 (; 186 ;) (param $0 i64) (result i32) @@ -16401,7 +16392,7 @@ i32.shl i32.add local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $0 i32.lt_u @@ -16418,7 +16409,7 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 8cfca5c25e..1cef377c32 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -265,6 +265,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -283,6 +285,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -335,6 +339,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -474,6 +480,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -487,6 +495,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -580,6 +590,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -636,6 +648,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -655,6 +669,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -709,6 +725,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -819,6 +837,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -856,6 +876,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -887,6 +909,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -970,6 +994,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -1029,50 +1055,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1192,6 +1222,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1264,6 +1296,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1368,6 +1402,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1470,6 +1506,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1482,20 +1519,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1504,23 +1543,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1529,11 +1568,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1556,6 +1595,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1573,19 +1614,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1688,6 +1731,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1779,6 +1824,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1802,9 +1849,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1821,6 +1872,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1840,6 +1893,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1852,6 +1907,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1880,6 +1937,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1904,6 +1963,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1911,6 +1971,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -2122,13 +2184,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -2155,9 +2217,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -2189,8 +2250,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -2247,39 +2312,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2287,13 +2354,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2334,9 +2401,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2493,13 +2559,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2574,9 +2640,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2615,13 +2680,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2696,9 +2761,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2723,13 +2787,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2804,9 +2868,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3276,6 +3339,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3289,6 +3353,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3322,13 +3388,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3339,30 +3405,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3379,37 +3444,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3420,17 +3483,17 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 - local.get $3 - i32.eqz + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz if br $~lib/util/memory/memmove|inlined.0 end @@ -3445,17 +3508,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3468,16 +3530,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3489,9 +3550,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3553,6 +3613,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3563,6 +3625,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3611,8 +3675,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3654,6 +3722,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -4040,6 +4110,10 @@ select end local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 i32.lt_s @@ -4087,11 +4161,14 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/array/isArraysEqual (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -4138,7 +4215,11 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if + i32.const 0 + drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4148,12 +4229,12 @@ i32.ne if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $3 @@ -4232,10 +4313,16 @@ select end local.set $3 + i32.const 0 + drop + i32.const 0 + drop loop $for-loop|0 local.get $2 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $4 local.get $2 @@ -4285,11 +4372,14 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/array/isArraysEqual (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -4336,7 +4426,11 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if + i32.const 0 + drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4346,12 +4440,12 @@ i32.ne if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $3 @@ -4413,6 +4507,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -4538,6 +4634,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4650,6 +4748,8 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $2 @@ -4690,6 +4790,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#pop (; 63 ;) (param $0 i32) (result i32) @@ -4730,9 +4832,12 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 i32.load offset=12 local.set $2 + i32.const 1 + drop local.get $2 local.get $1 i32.gt_s @@ -4752,7 +4857,7 @@ i32.shl i32.add local.set $5 - loop $continue|0 + loop $do-continue|0 local.get $4 i32.load call $~lib/rt/pure/__release @@ -4762,7 +4867,9 @@ local.tee $4 local.get $5 i32.lt_u - br_if $continue|0 + local.set $6 + local.get $6 + br_if $do-continue|0 end else local.get $0 @@ -4831,6 +4938,8 @@ i32.const 2 i32.shl local.set $7 + i32.const 0 + drop local.get $6 local.get $0 i32.load offset=4 @@ -4963,6 +5072,8 @@ i32.lt_s select local.set $11 + i32.const 0 + drop local.get $4 local.get $8 i32.const 2 @@ -4983,6 +5094,7 @@ (func $std/array/isArraysEqual (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -5029,7 +5141,11 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if + i32.const 0 + drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -5039,12 +5155,12 @@ i32.ne if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $3 @@ -5087,6 +5203,8 @@ i32.const 2 i32.shl call $~lib/memory/memory.copy + i32.const 0 + drop local.get $3 local.get $1 i32.store @@ -5149,6 +5267,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 i32.load offset=12 local.set $1 @@ -5166,22 +5285,22 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 + local.set $5 local.get $2 local.get $3 i32.load i32.store local.get $3 - local.get $4 + local.get $5 i32.store local.get $2 i32.const 4 @@ -5191,9 +5310,8 @@ i32.const 4 i32.sub local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end end local.get $0 @@ -5240,13 +5358,13 @@ local.get $0 i32.load offset=4 local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if local.get $6 local.get $2 i32.const 2 @@ -5263,9 +5381,8 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 ) @@ -5310,13 +5427,13 @@ local.get $0 i32.load offset=4 local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if local.get $6 local.get $2 i32.const 2 @@ -5333,9 +5450,8 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 ) @@ -5380,13 +5496,13 @@ local.get $0 i32.load offset=4 local.set $6 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $4 + local.get $4 + if local.get $6 local.get $2 i32.const 3 @@ -5403,13 +5519,14 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 ) (func $~lib/array/Array#includes (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + i32.const 0 + drop local.get $0 local.get $1 local.get $2 @@ -5423,6 +5540,8 @@ (local $4 i32) (local $5 i32) (local $6 f32) + i32.const 1 + drop local.get $0 i32.load offset=12 local.set $3 @@ -5459,13 +5578,13 @@ local.get $0 i32.load offset=4 local.set $4 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $5 + local.get $5 + if local.get $4 local.get $2 i32.const 2 @@ -5495,9 +5614,8 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 return @@ -5507,6 +5625,8 @@ (local $4 i32) (local $5 i32) (local $6 f64) + i32.const 1 + drop local.get $0 i32.load offset=12 local.set $3 @@ -5543,13 +5663,13 @@ local.get $0 i32.load offset=4 local.set $4 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_s + local.set $5 + local.get $5 + if local.get $4 local.get $2 i32.const 3 @@ -5579,9 +5699,8 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 return @@ -5830,6 +5949,10 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -5984,9 +6107,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -6065,6 +6194,8 @@ i32.lt_s select i32.lt_s + local.set $4 + local.get $4 if i32.const 3 global.set $~lib/argc @@ -6199,6 +6330,8 @@ i32.lt_s select i32.lt_s + local.set $4 + local.get $4 if i32.const 3 global.set $~lib/argc @@ -6321,6 +6454,8 @@ i32.lt_s select i32.lt_s + local.set $4 + local.get $4 if i32.const 3 global.set $~lib/argc @@ -6440,6 +6575,8 @@ i32.lt_s select i32.lt_s + local.set $4 + local.get $4 if i32.const 3 global.set $~lib/argc @@ -6504,6 +6641,7 @@ ) (func $start:std/array~anonymous|20 (; 112 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) + (local $4 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -6517,6 +6655,8 @@ local.get $3 i32.const 4 i32.lt_s + local.set $4 + local.get $4 if local.get $2 call $~lib/array/Array#pop @@ -6534,6 +6674,8 @@ local.get $3 i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $2 i32.const 100 @@ -6554,6 +6696,8 @@ local.get $3 i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $2 call $~lib/array/Array#pop @@ -6571,6 +6715,8 @@ local.get $3 i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $2 local.get $3 @@ -6653,6 +6799,8 @@ i32.lt_s select i32.lt_s + local.set $6 + local.get $6 if i32.const 3 global.set $~lib/argc @@ -6668,6 +6816,8 @@ local.get $1 call_indirect (type $i32_i32_i32_=>_f32) local.set $8 + i32.const 0 + drop local.get $4 local.get $5 i32.const 2 @@ -6715,6 +6865,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $start:std/array~anonymous|22 (; 118 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6770,6 +6922,8 @@ i32.lt_s select i32.lt_s + local.set $6 + local.get $6 if i32.const 3 global.set $~lib/argc @@ -6784,13 +6938,15 @@ local.get $0 local.get $1 call_indirect (type $i32_i32_i32_=>_i32) - local.set $6 + local.set $7 + i32.const 0 + drop local.get $4 local.get $5 i32.const 2 i32.shl i32.add - local.get $6 + local.get $7 i32.store local.get $5 i32.const 1 @@ -6877,6 +7033,8 @@ i32.lt_s select i32.lt_s + local.set $5 + local.get $5 if local.get $0 i32.load offset=4 @@ -6885,17 +7043,17 @@ i32.shl i32.add i32.load - local.set $5 + local.set $6 i32.const 3 global.set $~lib/argc - local.get $5 + local.get $6 local.get $3 local.get $0 local.get $1 call_indirect (type $i32_i32_i32_=>_i32) if local.get $2 - local.get $5 + local.get $6 call $~lib/array/Array#push drop end @@ -7004,6 +7162,8 @@ i32.lt_s select i32.lt_s + local.set $6 + local.get $6 if i32.const 4 global.set $~lib/argc @@ -7085,6 +7245,8 @@ i32.lt_s select i32.lt_s + local.set $6 + local.get $6 if i32.const 4 global.set $~lib/argc @@ -7190,6 +7352,7 @@ (func $~lib/array/Array#reduceRight (; 137 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $2 local.set $3 local.get $0 @@ -7201,6 +7364,8 @@ local.get $4 i32.const 0 i32.ge_s + local.set $5 + local.get $5 if i32.const 4 global.set $~lib/argc @@ -7260,6 +7425,7 @@ (func $~lib/array/Array#reduceRight (; 140 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $2 local.set $3 local.get $0 @@ -7271,6 +7437,8 @@ local.get $4 i32.const 0 i32.ge_s + local.set $5 + local.get $5 if i32.const 4 global.set $~lib/argc @@ -7478,16 +7646,20 @@ ) (func $~lib/util/sort/insertionSort (; 148 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f32) - (local $5 i32) - (local $6 f32) + (local $4 i32) + (local $5 f32) + (local $6 i32) (local $7 i32) + (local $8 f32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -7495,63 +7667,64 @@ i32.shl i32.add f32.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 i32.const 0 i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - f32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $f32_f32_=>_i32) - i32.const 0 - i32.lt_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - f32.store - else - br $break|1 + f32.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $f32_f32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + f32.store + else + br $while-break|1 + end + br $while-continue|1 end - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 f32.store local.get $3 i32.const 1 @@ -7567,9 +7740,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) (local $9 f32) (local $10 f32) + (local $11 i32) + (local $12 f32) local.get $1 i32.const 31 i32.add @@ -7594,63 +7769,64 @@ local.get $5 i32.const 0 i32.gt_s + local.set $6 + local.get $6 if local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - i32.eqz - br_if $break|1 - local.get $6 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 i32.const 1 i32.shr_s - local.set $6 - br $continue|1 + local.set $7 + br $while-continue|1 end - unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shr_s - local.set $7 + local.set $8 local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add f32.load - local.set $8 + local.set $9 local.get $0 local.get $5 i32.const 2 i32.shl i32.add f32.load - local.set $9 + local.set $10 i32.const 2 global.set $~lib/argc - local.get $8 local.get $9 + local.get $10 local.get $2 call_indirect (type $f32_f32_=>_i32) i32.const 0 @@ -7683,14 +7859,14 @@ i32.const 2 i32.shl i32.add - local.get $8 + local.get $9 f32.store local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 f32.store end local.get $5 @@ -7708,10 +7884,12 @@ local.get $5 i32.const 2 i32.ge_s + local.set $6 + local.get $6 if local.get $0 f32.load - local.set $9 + local.set $10 local.get $0 local.get $0 local.get $5 @@ -7725,76 +7903,75 @@ i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 f32.store i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $6 - local.set $7 - br $continue|3 + local.set $8 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if local.get $0 f32.load - local.set $9 + local.set $10 local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add f32.load - local.set $8 + local.set $9 i32.const 2 global.set $~lib/argc + local.get $10 local.get $9 - local.get $8 local.get $2 call_indirect (type $f32_f32_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 i32.shl i32.add local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 @@ -7802,30 +7979,29 @@ i32.add i32.load i32.const 1 - local.get $7 + local.get $8 i32.const 31 i32.and i32.shl i32.xor i32.store local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 f32.store local.get $0 - local.get $8 + local.get $9 f32.store end - local.get $7 + local.get $8 i32.const 1 i32.shr_s - local.set $7 - br $continue|4 + local.set $8 + br $while-continue|4 end - unreachable end local.get $5 i32.const 1 @@ -7838,13 +8014,13 @@ call $~lib/rt/tlsf/__free local.get $0 f32.load offset=4 - local.set $10 + local.set $12 local.get $0 local.get $0 f32.load f32.store offset=4 local.get $0 - local.get $10 + local.get $12 f32.store ) (func $~lib/array/Array#sort (; 150 ;) (param $0 i32) (param $1 i32) (result i32) @@ -7905,6 +8081,8 @@ local.set $7 local.get $1 local.set $6 + i32.const 0 + drop local.get $7 i32.const 256 i32.lt_s @@ -7965,6 +8143,12 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop i32.const 44 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -7976,8 +8160,9 @@ ) (func $std/array/isArraysEqual (; 153 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 f32) - (local $5 i32) + (local $4 i32) + (local $5 f32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -8024,20 +8209,24 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if block $for-continue|0 + i32.const 1 + drop local.get $0 local.get $3 call $~lib/array/Array#__get - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f32.ne if (result i32) local.get $1 local.get $3 call $~lib/array/Array#__get - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f32.ne else i32.const 0 @@ -8054,12 +8243,12 @@ f32.ne if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $6 return end end @@ -8080,16 +8269,20 @@ ) (func $~lib/util/sort/insertionSort (; 154 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) + (local $4 i32) + (local $5 f64) + (local $6 i32) (local $7 i32) + (local $8 f64) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -8097,63 +8290,64 @@ i32.shl i32.add f64.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 + local.set $6 + block $while-break|1 + loop $while-continue|1 + local.get $6 i32.const 0 i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $6 - local.get $2 - call_indirect (type $f64_f64_=>_i32) - i32.const 0 - i32.lt_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 3 i32.shl i32.add - local.get $6 - f64.store - else - br $break|1 + f64.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + else + br $while-break|1 + end + br $while-continue|1 end - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $4 + local.get $5 f64.store local.get $3 i32.const 1 @@ -8169,9 +8363,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) + (local $8 i32) (local $9 f64) (local $10 f64) + (local $11 i32) + (local $12 f64) local.get $1 i32.const 31 i32.add @@ -8196,63 +8392,64 @@ local.get $5 i32.const 0 i32.gt_s + local.set $6 + local.get $6 if local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - i32.eqz - br_if $break|1 - local.get $6 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 i32.const 1 i32.shr_s - local.set $6 - br $continue|1 + local.set $7 + br $while-continue|1 end - unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shr_s - local.set $7 + local.set $8 local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add f64.load - local.set $8 + local.set $9 local.get $0 local.get $5 i32.const 3 i32.shl i32.add f64.load - local.set $9 + local.set $10 i32.const 2 global.set $~lib/argc - local.get $8 local.get $9 + local.get $10 local.get $2 call_indirect (type $f64_f64_=>_i32) i32.const 0 @@ -8285,14 +8482,14 @@ i32.const 3 i32.shl i32.add - local.get $8 + local.get $9 f64.store local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store end local.get $5 @@ -8310,10 +8507,12 @@ local.get $5 i32.const 2 i32.ge_s + local.set $6 + local.get $6 if local.get $0 f64.load - local.set $9 + local.set $10 local.get $0 local.get $0 local.get $5 @@ -8327,76 +8526,75 @@ i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $6 - local.set $7 - br $continue|3 + local.set $8 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if local.get $0 f64.load - local.set $9 + local.set $10 local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add f64.load - local.set $8 + local.set $9 i32.const 2 global.set $~lib/argc + local.get $10 local.get $9 - local.get $8 local.get $2 call_indirect (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 i32.shl i32.add local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 @@ -8404,30 +8602,29 @@ i32.add i32.load i32.const 1 - local.get $7 + local.get $8 i32.const 31 i32.and i32.shl i32.xor i32.store local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store local.get $0 - local.get $8 + local.get $9 f64.store end - local.get $7 + local.get $8 i32.const 1 i32.shr_s - local.set $7 - br $continue|4 + local.set $8 + br $while-continue|4 end - unreachable end local.get $5 i32.const 1 @@ -8440,13 +8637,13 @@ call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 - local.set $10 + local.set $12 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $10 + local.get $12 f64.store ) (func $~lib/array/Array#sort (; 156 ;) (param $0 i32) (param $1 i32) (result i32) @@ -8507,6 +8704,8 @@ local.set $7 local.get $1 local.set $6 + i32.const 0 + drop local.get $7 i32.const 256 i32.lt_s @@ -8567,6 +8766,12 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop i32.const 45 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -8607,12 +8812,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/array/isArraysEqual (; 162 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) - (local $4 f64) - (local $5 i32) + (local $4 i32) + (local $5 f64) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -8659,20 +8867,24 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if block $for-continue|0 + i32.const 1 + drop local.get $0 local.get $3 call $~lib/array/Array#__get - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.ne if (result i32) local.get $1 local.get $3 call $~lib/array/Array#__get - local.tee $4 - local.get $4 + local.tee $5 + local.get $5 f64.ne else i32.const 0 @@ -8689,12 +8901,12 @@ f64.ne if i32.const 0 - local.set $5 + local.set $6 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $6 return end end @@ -8719,12 +8931,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -8732,63 +8948,64 @@ i32.shl i32.add i32.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - br $break|1 + i32.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 end - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store local.get $3 i32.const 1 @@ -8807,6 +9024,8 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 i32.const 31 i32.add @@ -8831,63 +9050,64 @@ local.get $5 i32.const 0 i32.gt_s + local.set $6 + local.get $6 if local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - i32.eqz - br_if $break|1 - local.get $6 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 i32.const 1 i32.shr_s - local.set $6 - br $continue|1 + local.set $7 + br $while-continue|1 end - unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shr_s - local.set $7 + local.set $8 local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $9 local.get $0 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $9 + local.set $10 i32.const 2 global.set $~lib/argc - local.get $8 local.get $9 + local.get $10 local.get $2 call_indirect (type $i32_i32_=>_i32) i32.const 0 @@ -8920,14 +9140,14 @@ i32.const 2 i32.shl i32.add - local.get $8 + local.get $9 i32.store local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store end local.get $5 @@ -8945,10 +9165,12 @@ local.get $5 i32.const 2 i32.ge_s + local.set $6 + local.get $6 if local.get $0 i32.load - local.set $9 + local.set $10 local.get $0 local.get $0 local.get $5 @@ -8962,76 +9184,75 @@ i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store i32.const 1 - local.set $8 - block $break|3 - loop $continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load + local.set $9 + loop $while-continue|3 + local.get $9 + i32.const 1 + i32.shl + local.get $4 + local.get $9 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $8 + local.get $5 + i32.lt_s + local.set $7 + local.get $7 + if local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $7 - local.set $8 - br $continue|3 + local.set $9 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $8 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $9 + i32.const 0 + i32.gt_s + local.set $7 + local.get $7 + if local.get $0 i32.load - local.set $9 + local.set $10 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i32.load - local.set $6 + local.set $11 i32.const 2 global.set $~lib/argc - local.get $9 - local.get $6 + local.get $10 + local.get $11 local.get $2 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $8 + local.get $9 i32.const 5 i32.shr_s i32.const 2 i32.shl i32.add local.get $4 - local.get $8 + local.get $9 i32.const 5 i32.shr_s i32.const 2 @@ -9039,30 +9260,29 @@ i32.add i32.load i32.const 1 - local.get $8 + local.get $9 i32.const 31 i32.and i32.shl i32.xor i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store local.get $0 - local.get $6 + local.get $11 i32.store end - local.get $8 + local.get $9 i32.const 1 i32.shr_s - local.set $8 - br $continue|4 + local.set $9 + br $while-continue|4 end - unreachable end local.get $5 i32.const 1 @@ -9075,13 +9295,13 @@ call $~lib/rt/tlsf/__free local.get $0 i32.load offset=4 - local.set $10 + local.set $12 local.get $0 local.get $0 i32.load i32.store offset=4 local.get $0 - local.get $10 + local.get $12 i32.store ) (func $~lib/array/Array#sort (; 165 ;) (param $0 i32) (param $1 i32) (result i32) @@ -9140,6 +9360,8 @@ local.set $5 local.get $1 local.set $4 + i32.const 0 + drop local.get $5 i32.const 256 i32.lt_s @@ -9172,6 +9394,10 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 1 + drop i32.const 46 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -9187,12 +9413,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -9200,63 +9430,64 @@ i32.shl i32.add i32.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - br $break|1 + i32.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + br $while-break|1 + end + br $while-continue|1 end - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store local.get $3 i32.const 1 @@ -9275,6 +9506,8 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $1 i32.const 31 i32.add @@ -9299,63 +9532,64 @@ local.get $5 i32.const 0 i32.gt_s + local.set $6 + local.get $6 if local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - i32.eqz - br_if $break|1 - local.get $6 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 i32.const 1 i32.shr_s - local.set $6 - br $continue|1 + local.set $7 + br $while-continue|1 end - unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shr_s - local.set $7 + local.set $8 local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i32.load - local.set $8 + local.set $9 local.get $0 local.get $5 i32.const 2 i32.shl i32.add i32.load - local.set $9 + local.set $10 i32.const 2 global.set $~lib/argc - local.get $8 local.get $9 + local.get $10 local.get $2 call_indirect (type $i32_i32_=>_i32) i32.const 0 @@ -9388,14 +9622,14 @@ i32.const 2 i32.shl i32.add - local.get $8 + local.get $9 i32.store local.get $0 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store end local.get $5 @@ -9413,10 +9647,12 @@ local.get $5 i32.const 2 i32.ge_s + local.set $6 + local.get $6 if local.get $0 i32.load - local.set $9 + local.set $10 local.get $0 local.get $0 local.get $5 @@ -9430,76 +9666,75 @@ i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store i32.const 1 - local.set $8 - block $break|3 - loop $continue|3 - local.get $8 - i32.const 1 - i32.shl - local.get $4 - local.get $8 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load + local.set $9 + loop $while-continue|3 + local.get $9 + i32.const 1 + i32.shl + local.get $4 + local.get $9 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $9 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $8 + local.get $5 + i32.lt_s + local.set $7 + local.get $7 + if local.get $8 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $7 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $7 - local.set $8 - br $continue|3 + local.set $9 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $8 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $9 + i32.const 0 + i32.gt_s + local.set $7 + local.get $7 + if local.get $0 i32.load - local.set $9 + local.set $10 local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i32.load - local.set $6 + local.set $11 i32.const 2 global.set $~lib/argc - local.get $9 - local.get $6 + local.get $10 + local.get $11 local.get $2 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $8 + local.get $9 i32.const 5 i32.shr_s i32.const 2 i32.shl i32.add local.get $4 - local.get $8 + local.get $9 i32.const 5 i32.shr_s i32.const 2 @@ -9507,30 +9742,29 @@ i32.add i32.load i32.const 1 - local.get $8 + local.get $9 i32.const 31 i32.and i32.shl i32.xor i32.store local.get $0 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add - local.get $9 + local.get $10 i32.store local.get $0 - local.get $6 + local.get $11 i32.store end - local.get $8 + local.get $9 i32.const 1 i32.shr_s - local.set $8 - br $continue|4 + local.set $9 + br $while-continue|4 end - unreachable end local.get $5 i32.const 1 @@ -9543,13 +9777,13 @@ call $~lib/rt/tlsf/__free local.get $0 i32.load offset=4 - local.set $10 + local.set $12 local.get $0 local.get $0 i32.load i32.store offset=4 local.get $0 - local.get $10 + local.get $12 i32.store ) (func $~lib/array/Array#sort (; 170 ;) (param $0 i32) (param $1 i32) (result i32) @@ -9608,6 +9842,8 @@ local.set $5 local.get $1 local.set $4 + i32.const 0 + drop local.get $5 i32.const 256 i32.lt_s @@ -9644,6 +9880,10 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 1 + drop + i32.const 0 + drop i32.const 47 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -9656,6 +9896,7 @@ (func $std/array/createReverseOrderedArray (; 173 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 local.get $0 call $~lib/array/Array#constructor @@ -9666,6 +9907,8 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if local.get $1 local.get $2 @@ -9742,6 +9985,7 @@ (func $std/array/createRandomOrderedArray (; 175 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) + (local $3 i32) i32.const 0 local.get $0 call $~lib/array/Array#constructor @@ -9752,6 +9996,8 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if local.get $1 local.get $2 @@ -9779,6 +10025,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -9791,6 +10038,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if i32.const 2 global.set $~lib/argc @@ -9808,10 +10057,10 @@ i32.gt_s if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $2 @@ -9858,6 +10107,10 @@ local.set $0 local.get $0 block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) + i32.const 1 + drop + i32.const 1 + drop i32.const 48 br $~lib/util/sort/COMPARATOR|inlined.1 end @@ -9913,6 +10166,8 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $1 @@ -9982,6 +10237,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 0 local.get $0 call $~lib/array/Array<~lib/array/Array>#constructor @@ -9992,12 +10248,14 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if i32.const 0 i32.const 1 call $~lib/array/Array#constructor - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.const 0 local.get $0 i32.const 1 @@ -10007,9 +10265,9 @@ call $~lib/array/Array#__set local.get $1 local.get $2 - local.get $3 + local.get $4 call $~lib/array/Array<~lib/array/Array>#__set - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $2 i32.const 1 @@ -10048,12 +10306,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -10062,70 +10324,71 @@ i32.add i32.load call $~lib/rt/pure/__retain - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - local.get $6 + i32.load + call $~lib/rt/pure/__retain + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + local.get $8 + call $~lib/rt/pure/__release + br $while-break|1 + end + local.get $8 call $~lib/rt/pure/__release - br $break|1 + br $while-continue|1 end - local.get $6 - call $~lib/rt/pure/__release - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -10199,6 +10462,8 @@ local.set $4 local.get $1 local.set $6 + i32.const 1 + drop local.get $5 local.get $4 local.get $6 @@ -10238,6 +10503,10 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -10258,6 +10527,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -10270,6 +10540,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if i32.const 2 global.set $~lib/argc @@ -10278,31 +10550,31 @@ i32.const 1 i32.sub call $~lib/array/Array<~lib/array/Array>#__get - local.tee $4 + local.tee $5 local.get $0 local.get $2 call $~lib/array/Array<~lib/array/Array>#__get - local.tee $5 + local.tee $6 local.get $1 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if i32.const 0 - local.set $6 + local.set $7 local.get $0 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 return end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -10384,6 +10656,8 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $1 @@ -10453,6 +10727,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 0 local.get $0 call $~lib/array/Array>#constructor @@ -10463,6 +10738,8 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if local.get $1 local.get $2 @@ -10473,9 +10750,9 @@ local.get $2 i32.sub call $std/array/Proxy#constructor - local.tee $3 + local.tee $4 call $~lib/array/Array>#__set - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $2 i32.const 1 @@ -10512,12 +10789,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -10526,70 +10807,71 @@ i32.add i32.load call $~lib/rt/pure/__retain - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - local.get $6 + i32.load + call $~lib/rt/pure/__retain + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + local.get $8 + call $~lib/rt/pure/__release + br $while-break|1 + end + local.get $8 call $~lib/rt/pure/__release - br $break|1 + br $while-continue|1 end - local.get $6 - call $~lib/rt/pure/__release - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -10663,6 +10945,8 @@ local.set $4 local.get $1 local.set $6 + i32.const 1 + drop local.get $5 local.get $4 local.get $6 @@ -10702,6 +10986,10 @@ local.get $1 call $~lib/array/Array>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -10722,6 +11010,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -10734,6 +11023,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if i32.const 2 global.set $~lib/argc @@ -10742,31 +11033,31 @@ i32.const 1 i32.sub call $~lib/array/Array>#__get - local.tee $4 + local.tee $5 local.get $0 local.get $2 call $~lib/array/Array>#__get - local.tee $5 + local.tee $6 local.get $1 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if i32.const 0 - local.set $6 + local.set $7 local.get $0 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 return end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -10811,12 +11102,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -10825,70 +11120,71 @@ i32.add i32.load call $~lib/rt/pure/__retain - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - local.get $6 + i32.load + call $~lib/rt/pure/__retain + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + local.get $8 + call $~lib/rt/pure/__release + br $while-break|1 + end + local.get $8 call $~lib/rt/pure/__release - br $break|1 + br $while-continue|1 end - local.get $6 - call $~lib/rt/pure/__release - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -10962,6 +11258,8 @@ local.set $4 local.get $1 local.set $6 + i32.const 1 + drop local.get $5 local.get $4 local.get $6 @@ -11001,6 +11299,10 @@ local.get $1 call $~lib/array/Array<~lib/string/String | null>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 0 + drop local.get $2 ) (func $std/array/isSorted<~lib/string/String | null> (; 214 ;) (param $0 i32) (param $1 i32) (result i32) @@ -11009,6 +11311,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11021,6 +11324,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if i32.const 2 global.set $~lib/argc @@ -11029,31 +11334,31 @@ i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $4 + local.tee $5 local.get $0 local.get $2 call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $5 + local.tee $6 local.get $1 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if i32.const 0 - local.set $6 + local.set $7 local.get $0 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 return end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -11106,6 +11411,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11124,6 +11430,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -11140,15 +11448,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -11165,39 +11473,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $10 return end local.get $5 @@ -11208,17 +11518,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/util/sort/COMPARATOR<~lib/string/String | null>~anonymous|0 (; 218 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -11338,6 +11647,12 @@ unreachable end block $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 55 br $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 end @@ -11444,6 +11759,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -11490,34 +11806,38 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if + i32.const 0 + drop local.get $0 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $4 + local.tee $5 local.get $1 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get - local.tee $5 + local.tee $6 call $~lib/string/String.__ne if i32.const 0 - local.set $6 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 return end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $3 i32.const 1 i32.add @@ -11683,11 +12003,12 @@ (func $std/array/createRandomString (; 227 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) - (local $3 f64) - (local $4 i32) + (local $3 i32) + (local $4 f64) (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 5168 local.set $1 i32.const 0 @@ -11696,6 +12017,8 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if local.get $1 global.get $std/array/charset @@ -11704,31 +12027,31 @@ call $~lib/string/String#get:length f64.convert_i32_s f64.mul - local.set $3 - local.get $3 + local.set $4 + local.get $4 f64.floor i32.trunc_f64_s call $~lib/string/String#charAt - local.tee $4 - call $~lib/string/String.__concat local.tee $5 + call $~lib/string/String.__concat local.tee $6 - local.get $1 local.tee $7 + local.get $1 + local.tee $8 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $7 + call $~lib/rt/pure/__retain + local.set $7 + local.get $8 call $~lib/rt/pure/__release end - local.get $6 + local.get $7 local.set $1 - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -11744,6 +12067,8 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $1 @@ -11813,6 +12138,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 0 local.get $0 call $~lib/array/Array<~lib/string/String>#constructor @@ -11823,6 +12149,8 @@ local.get $2 local.get $0 i32.lt_s + local.set $3 + local.get $3 if local.get $1 local.get $2 @@ -11831,9 +12159,9 @@ f64.mul i32.trunc_f64_s call $std/array/createRandomString - local.tee $3 + local.tee $4 call $~lib/array/Array<~lib/string/String>#__set - local.get $3 + local.get $4 call $~lib/rt/pure/__release local.get $2 i32.const 1 @@ -11850,12 +12178,16 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -11864,70 +12196,71 @@ i32.add i32.load call $~lib/rt/pure/__retain - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 2 - i32.shl - i32.add - i32.load - call $~lib/rt/pure/__retain - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $i32_i32_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 2 i32.shl i32.add - local.get $6 - i32.store - else - local.get $6 + i32.load + call $~lib/rt/pure/__retain + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $i32_i32_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store + else + local.get $8 + call $~lib/rt/pure/__release + br $while-break|1 + end + local.get $8 call $~lib/rt/pure/__release - br $break|1 + br $while-continue|1 end - local.get $6 - call $~lib/rt/pure/__release - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $5 i32.store - local.get $4 + local.get $5 call $~lib/rt/pure/__release local.get $3 i32.const 1 @@ -12001,6 +12334,8 @@ local.set $4 local.get $1 local.set $6 + i32.const 1 + drop local.get $5 local.get $4 local.get $6 @@ -12040,6 +12375,10 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -12060,6 +12399,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -12072,6 +12412,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if i32.const 2 global.set $~lib/argc @@ -12080,31 +12422,31 @@ i32.const 1 i32.sub call $~lib/array/Array<~lib/string/String>#__get - local.tee $4 + local.tee $5 local.get $0 local.get $2 call $~lib/array/Array<~lib/string/String>#__get - local.tee $5 + local.tee $6 local.get $1 call_indirect (type $i32_i32_=>_i32) i32.const 0 i32.gt_s if i32.const 0 - local.set $6 + local.set $7 local.get $0 call $~lib/rt/pure/__release - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release local.get $6 + call $~lib/rt/pure/__release + local.get $7 return end - local.get $4 - call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release + local.get $6 + call $~lib/rt/pure/__release local.get $2 i32.const 1 i32.add @@ -12261,6 +12603,12 @@ unreachable end block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 56 br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end @@ -12386,6 +12734,8 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -12443,10 +12793,12 @@ local.set $9 i32.const 0 local.set $4 - loop $for-loop|0 + loop $for-loop|1 local.get $4 local.get $3 i32.lt_s + local.set $12 + local.get $12 if local.get $0 local.get $4 @@ -12496,7 +12848,7 @@ i32.const 1 i32.add local.set $4 - br $for-loop|0 + br $for-loop|1 end end local.get $0 @@ -12561,6 +12913,8 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -12643,50 +12997,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 5968 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -12696,15 +13053,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -12713,30 +13069,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -12753,13 +13109,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -12769,13 +13125,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -12820,6 +13176,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -12834,6 +13192,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 246 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -12861,6 +13225,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i32.const 0 i32.lt_s @@ -12872,6 +13238,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 call $~lib/util/number/decimalCount32 local.get $4 @@ -12883,6 +13251,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -12961,6 +13331,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -13049,6 +13421,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -13086,6 +13462,8 @@ local.set $4 local.get $1 local.set $3 + i32.const 0 + drop local.get $5 local.get $4 local.get $3 @@ -13094,6 +13472,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 251 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/utoa32 return @@ -13120,6 +13504,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/number/decimalCount32 local.set $3 @@ -13129,6 +13517,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -13201,6 +13591,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -13289,6 +13681,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -13330,14 +13726,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -13375,13 +13774,13 @@ i32.const 7504 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -13395,44 +13794,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -13441,7 +13840,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -13451,7 +13850,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -13461,7 +13860,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -13471,7 +13870,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -13481,7 +13880,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -13491,7 +13890,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -13501,7 +13900,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -13511,7 +13910,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -13521,7 +13920,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -13529,31 +13928,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -13570,8 +13969,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -13580,13 +13979,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -13596,228 +13995,230 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub + local.get $22 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 local.get $22 - local.get $20 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/number/prettify (; 258 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -13869,6 +14270,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -13977,6 +14380,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -14007,41 +14412,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -14087,8 +14494,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -14099,24 +14506,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -14755,6 +15164,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -14843,6 +15254,12 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -14863,6 +15280,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -14909,6 +15327,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $0 local.get $4 @@ -14916,18 +15336,18 @@ i32.shl i32.add i32.load - local.tee $7 - local.get $6 local.tee $8 + local.get $6 + local.tee $9 i32.ne if - local.get $7 - call $~lib/rt/pure/__retain - local.set $7 local.get $8 + call $~lib/rt/pure/__retain + local.set $8 + local.get $9 call $~lib/rt/pure/__release end - local.get $7 + local.get $8 local.set $6 local.get $6 i32.const 0 @@ -14947,12 +15367,12 @@ end end i32.const 0 - local.set $9 + local.set $10 local.get $2 call $~lib/string/String#get:length - local.set $10 + local.set $11 local.get $5 - local.get $10 + local.get $11 local.get $3 i32.mul i32.add @@ -14960,13 +15380,15 @@ i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $11 + local.set $12 i32.const 0 local.set $4 loop $for-loop|1 local.get $4 local.get $3 i32.lt_s + local.set $7 + local.get $7 if local.get $0 local.get $4 @@ -14974,18 +15396,18 @@ i32.shl i32.add i32.load - local.tee $8 + local.tee $9 local.get $6 - local.tee $7 + local.tee $8 i32.ne if - local.get $8 + local.get $9 call $~lib/rt/pure/__retain - local.set $8 - local.get $7 + local.set $9 + local.get $8 call $~lib/rt/pure/__release end - local.get $8 + local.get $9 local.set $6 local.get $6 i32.const 0 @@ -14993,38 +15415,38 @@ if local.get $6 call $~lib/string/String#get:length - local.set $8 - local.get $11 - local.get $9 + local.set $9 + local.get $12 + local.get $10 i32.const 1 i32.shl i32.add local.get $6 - local.get $8 + local.get $9 i32.const 1 i32.shl call $~lib/memory/memory.copy + local.get $10 local.get $9 - local.get $8 i32.add - local.set $9 + local.set $10 end - local.get $10 + local.get $11 if - local.get $11 - local.get $9 + local.get $12 + local.get $10 i32.const 1 i32.shl i32.add local.get $2 - local.get $10 + local.get $11 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 local.get $10 + local.get $11 i32.add - local.set $9 + local.set $10 end local.get $4 i32.const 1 @@ -15039,25 +15461,25 @@ i32.shl i32.add i32.load - local.tee $7 + local.tee $8 local.get $6 local.tee $4 i32.ne if - local.get $7 + local.get $8 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $4 call $~lib/rt/pure/__release end - local.get $7 + local.get $8 local.set $6 local.get $6 i32.const 0 i32.ne if - local.get $11 - local.get $9 + local.get $12 + local.get $10 i32.const 1 i32.shl i32.add @@ -15068,14 +15490,14 @@ i32.shl call $~lib/memory/memory.copy end - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $2 call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $7 + local.get $8 ) (func $~lib/array/Array<~lib/string/String | null>#join (; 265 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -15090,6 +15512,16 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -15113,6 +15545,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -15179,6 +15612,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -15186,18 +15621,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -15206,47 +15641,47 @@ local.get $7 local.get $5 call $std/array/Ref#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -15262,18 +15697,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -15282,23 +15717,23 @@ local.get $7 local.get $5 call $std/array/Ref#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -15324,6 +15759,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -15344,6 +15791,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -15410,6 +15858,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -15417,18 +15867,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -15437,47 +15887,47 @@ local.get $7 local.get $5 call $std/array/Ref#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -15493,18 +15943,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -15513,23 +15963,23 @@ local.get $7 local.get $5 call $std/array/Ref#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -15555,6 +16005,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -15571,6 +16033,12 @@ call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 272 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 24 i32.shl @@ -15606,6 +16074,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -15621,6 +16091,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -15640,6 +16112,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -15718,6 +16192,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -15806,6 +16282,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -15822,6 +16302,12 @@ call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 277 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 65535 i32.and @@ -15852,6 +16338,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -15865,6 +16355,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -15937,6 +16429,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -16025,6 +16519,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -16115,77 +16613,78 @@ ) (func $~lib/util/number/utoa64_lut (; 283 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) (local $13 i64) + (local $14 i64) i32.const 5968 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + local.set $4 + local.get $4 + if local.get $1 i64.const 100000000 i64.div_u - local.set $4 + local.set $5 local.get $1 - local.get $4 + local.get $5 i64.const 100000000 i64.mul i64.sub i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u local.set $6 local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 + local.set $1 local.get $6 - i32.const 100 + i32.const 10000 i32.div_u - local.set $8 + local.set $7 local.get $6 - i32.const 100 + i32.const 10000 i32.rem_u - local.set $9 + local.set $8 local.get $7 i32.const 100 i32.div_u - local.set $10 + local.set $9 local.get $7 i32.const 100 i32.rem_u + local.set $10 + local.get $8 + i32.const 100 + i32.div_u local.set $11 + local.get $8 + i32.const 100 + i32.rem_u + local.set $12 local.get $3 - local.get $10 + local.get $11 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -16195,26 +16694,26 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store local.get $3 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -16224,15 +16723,14 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.get $1 @@ -16278,6 +16776,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -16298,6 +16798,8 @@ local.set $7 local.get $3 local.set $4 + i32.const 0 + drop local.get $5 local.get $7 local.get $4 @@ -16307,6 +16809,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 285 ;) (param $0 i64) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 call $~lib/util/number/utoa64 return @@ -16337,6 +16845,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 0 + drop local.get $2 i64.const 4294967295 i64.le_u @@ -16353,6 +16865,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -16367,6 +16881,8 @@ local.set $8 local.get $3 local.set $5 + i32.const 0 + drop local.get $6 local.get $8 local.get $5 @@ -16440,6 +16956,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -16528,6 +17046,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -16595,6 +17117,8 @@ local.set $6 local.get $4 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -16617,6 +17141,8 @@ local.set $8 local.get $4 local.set $5 + i32.const 0 + drop local.get $6 local.get $8 local.get $5 @@ -16632,6 +17158,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 291 ;) (param $0 i64) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop local.get $0 call $~lib/util/number/itoa64 return @@ -16663,6 +17195,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i64.const 0 i64.lt_s @@ -16674,6 +17208,8 @@ i64.sub local.set $2 end + i32.const 0 + drop local.get $2 i64.const 4294967295 i64.le_u @@ -16692,6 +17228,8 @@ local.set $7 local.get $3 local.set $6 + i32.const 0 + drop local.get $8 local.get $7 local.get $6 @@ -16708,6 +17246,8 @@ local.set $9 local.get $3 local.set $6 + i32.const 0 + drop local.get $7 local.get $9 local.get $6 @@ -16787,6 +17327,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -16875,6 +17417,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -16905,6 +17451,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -16971,6 +17518,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -16978,18 +17527,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -16998,47 +17547,47 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -17054,18 +17603,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -17074,23 +17623,23 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -17116,6 +17665,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -17132,6 +17693,12 @@ call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/util/number/itoa (; 300 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 255 i32.and @@ -17162,6 +17729,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -17175,6 +17746,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -17247,6 +17820,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -17335,6 +17910,10 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -17360,6 +17939,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -17426,6 +18006,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -17433,18 +18015,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -17453,47 +18035,47 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -17509,18 +18091,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -17529,23 +18111,23 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -17571,6 +18153,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -17601,6 +18195,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -17667,6 +18262,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -17674,18 +18271,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -17694,47 +18291,47 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -17750,18 +18347,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -17770,23 +18367,23 @@ local.get $7 local.get $5 call $~lib/array/Array#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -17812,6 +18409,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -17837,6 +18446,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $2 call $~lib/rt/pure/__retain local.set $2 @@ -17903,6 +18513,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $4 @@ -17910,18 +18522,18 @@ i32.shl i32.add i32.load - local.tee $6 - local.get $5 local.tee $9 + local.get $5 + local.tee $10 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $10 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $5 local.get $5 i32.const 0 @@ -17930,47 +18542,47 @@ local.get $7 local.get $5 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $6 - call $~lib/string/String.__concat local.tee $9 + call $~lib/string/String.__concat local.tee $10 - local.get $7 local.tee $11 + local.get $7 + local.tee $12 i32.ne if - local.get $10 - call $~lib/rt/pure/__retain - local.set $10 local.get $11 + call $~lib/rt/pure/__retain + local.set $11 + local.get $12 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $7 - local.get $6 - call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release + local.get $10 + call $~lib/rt/pure/__release end local.get $8 if local.get $7 local.get $2 call $~lib/string/String.__concat - local.tee $9 - local.tee $11 + local.tee $10 + local.tee $12 local.get $7 - local.tee $6 + local.tee $9 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $6 + local.set $12 + local.get $9 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 local.set $7 - local.get $9 + local.get $10 call $~lib/rt/pure/__release end local.get $4 @@ -17986,18 +18598,18 @@ i32.shl i32.add i32.load - local.tee $10 + local.tee $11 local.get $5 local.tee $4 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 + local.set $11 local.get $4 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 local.set $5 local.get $5 i32.const 0 @@ -18006,23 +18618,23 @@ local.get $7 local.get $5 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $10 + local.tee $11 call $~lib/string/String.__concat local.tee $4 - local.tee $6 - local.get $7 local.tee $9 + local.get $7 + local.tee $6 i32.ne if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 local.get $9 + call $~lib/rt/pure/__retain + local.set $9 + local.get $6 call $~lib/rt/pure/__release end - local.get $6 + local.get $9 local.set $7 - local.get $10 + local.get $11 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -18048,6 +18660,18 @@ local.get $0 i32.load offset=12 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 local.get $3 local.get $1 @@ -22583,6 +23207,8 @@ local.get $76 i32.const 100 i32.lt_s + local.set $70 + local.get $70 if global.get $std/array/arr call $~lib/array/Array#pop @@ -24383,13 +25009,16 @@ call $start:std/array ) (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24439,6 +25068,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -24509,6 +25140,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -24525,6 +25158,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24535,19 +25171,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24555,21 +25191,25 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24580,19 +25220,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24600,15 +25240,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 325 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24619,19 +25261,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24639,15 +25281,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array>#__visit_impl (; 326 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24658,19 +25302,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24678,15 +25322,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/string/String | null>#__visit_impl (; 327 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24697,19 +25343,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24717,15 +25363,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/string/String>#__visit_impl (; 328 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24736,19 +25384,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24756,33 +25404,41 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24793,19 +25449,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24813,15 +25469,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 336 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24832,19 +25490,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24852,15 +25510,17 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#__visit_impl (; 337 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -24871,19 +25531,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -24891,9 +25551,8 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/rt/__visit_members (; 338 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 3d197caa7e..c5f9424c75 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -1496,7 +1496,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -1527,7 +1527,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -1613,7 +1613,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1639,10 +1639,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1663,11 +1663,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1688,7 +1688,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1700,7 +1700,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1721,10 +1721,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1740,11 +1740,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1758,7 +1758,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 7ad1ca8ced..ff42a2a40f 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -53,6 +53,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -71,6 +73,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -123,6 +127,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -262,6 +268,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -275,6 +283,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -368,6 +378,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -424,6 +436,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -443,6 +457,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -497,6 +513,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -607,6 +625,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -644,6 +664,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -675,6 +697,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -758,6 +782,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -817,50 +843,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -980,6 +1010,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1052,6 +1084,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1156,6 +1190,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1258,6 +1294,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1270,20 +1307,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1292,23 +1331,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1317,11 +1356,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1344,6 +1383,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1361,19 +1402,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1476,6 +1519,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1567,6 +1612,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1590,9 +1637,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1609,6 +1660,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1628,6 +1681,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1640,6 +1695,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1668,6 +1725,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1692,6 +1751,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1699,6 +1759,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1910,13 +1972,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -1943,9 +2005,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -1977,8 +2038,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -2040,39 +2105,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2080,13 +2147,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2127,9 +2194,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2286,13 +2352,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2367,9 +2433,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2408,13 +2473,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2489,9 +2554,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2516,13 +2580,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2597,9 +2661,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3069,6 +3132,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3082,6 +3146,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3115,13 +3181,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3132,30 +3198,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3172,37 +3237,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3213,15 +3276,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3238,17 +3301,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3261,16 +3323,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3282,9 +3343,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3454,6 +3514,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3464,6 +3526,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3512,8 +3576,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3555,6 +3623,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3622,6 +3692,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 1 + drop local.get $0 i32.const 0 i32.eq @@ -3634,6 +3706,30 @@ return end i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 local.set $1 local.get $0 call $~lib/rt/pure/__release @@ -3641,12 +3737,40 @@ ) (func $~lib/arraybuffer/ArrayBuffer.isView (; 36 ;) (param $0 i32) (result i32) i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array | null> (; 37 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 1 + drop local.get $0 i32.const 0 i32.eq @@ -3658,6 +3782,10 @@ local.get $1 return end + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -3670,6 +3798,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 1 + drop local.get $0 i32.const 0 i32.eq @@ -3681,6 +3811,18 @@ local.get $1 return end + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -3693,6 +3835,8 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 1 + drop local.get $0 i32.const 0 i32.eq @@ -3704,6 +3848,30 @@ local.get $1 return end + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -3843,6 +4011,32 @@ call $~lib/rt/pure/__retain local.set $0 i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 local.set $1 local.get $0 call $~lib/rt/pure/__release @@ -3853,6 +4047,12 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -3881,6 +4081,20 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -3995,6 +4209,32 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 local.set $1 local.get $0 @@ -4377,7 +4617,8 @@ call $start:std/arraybuffer ) (func $~lib/array/Array#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 53 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -4427,6 +4668,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4497,6 +4740,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index c48aa2f9b9..2133140c07 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -1467,7 +1467,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1493,10 +1493,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1517,11 +1517,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1542,7 +1542,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1554,7 +1554,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1575,10 +1575,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1594,11 +1594,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1612,7 +1612,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 3d95272ead..f77385f538 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -60,6 +60,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -78,6 +80,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -130,6 +134,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -269,6 +275,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -282,6 +290,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -375,6 +385,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -431,6 +443,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -450,6 +464,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -504,6 +520,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -614,6 +632,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -651,6 +671,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -682,6 +704,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -765,6 +789,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -824,50 +850,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -987,6 +1017,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1059,6 +1091,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1163,6 +1197,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1265,6 +1301,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1277,20 +1314,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1299,23 +1338,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1324,11 +1363,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1351,6 +1390,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1368,19 +1409,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1483,6 +1526,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1574,6 +1619,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1597,9 +1644,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1616,6 +1667,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1635,6 +1688,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1647,6 +1702,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1675,6 +1732,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1699,6 +1758,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1706,6 +1766,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1917,13 +1979,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -1950,9 +2012,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -1984,8 +2045,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -2042,39 +2107,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2082,13 +2149,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2129,9 +2196,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2288,13 +2354,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2369,9 +2435,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2410,13 +2475,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2491,9 +2556,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2518,13 +2582,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2599,9 +2663,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3071,6 +3134,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3084,6 +3148,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3117,13 +3183,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3134,30 +3200,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3174,37 +3239,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3215,15 +3278,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3240,17 +3303,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3263,16 +3325,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3284,9 +3345,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3348,6 +3408,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3358,6 +3420,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3406,8 +3470,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3449,6 +3517,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3710,6 +3780,12 @@ i32.sub ) (func $~lib/polyfills/bswap (; 38 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -3763,6 +3839,14 @@ (local $1 i64) (local $2 i64) (local $3 i64) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i64.const 8 i64.shr_u @@ -3854,6 +3938,10 @@ i32.load8_s ) (func $~lib/polyfills/bswap (; 43 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -3904,6 +3992,12 @@ end ) (func $~lib/polyfills/bswap (; 45 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -3955,6 +4049,14 @@ (local $1 i64) (local $2 i64) (local $3 i64) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i64.const 8 i64.shr_u @@ -4044,6 +4146,10 @@ i32.load8_u ) (func $~lib/polyfills/bswap (; 50 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -6279,6 +6385,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -6349,6 +6457,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 1079479214..e637e4b514 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -118,6 +118,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index 46f063526d..f2bfb62b96 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -29,6 +29,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -49,6 +50,8 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $1 local.get $0 @@ -215,6 +218,8 @@ i32.const 0 call $~lib/rt/stub/__retain local.set $0 + i32.const 1 + drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -228,6 +233,8 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) i32.const 32 local.set $1 + i32.const 1 + drop local.get $1 call $~lib/util/hash/hashStr local.set $0 @@ -241,6 +248,8 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) i32.const 48 local.set $0 + i32.const 1 + drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -254,6 +263,8 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) i32.const 80 local.set $1 + i32.const 1 + drop local.get $1 call $~lib/util/hash/hashStr local.set $0 @@ -267,6 +278,8 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) i32.const 112 local.set $0 + i32.const 1 + drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -280,6 +293,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) f32.const 0 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -290,6 +311,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) f32.const 1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -300,6 +329,14 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) f32.const 1.100000023841858 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -310,6 +347,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) f32.const 0 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -320,6 +365,14 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) f32.const inf local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -330,6 +383,14 @@ block $~lib/util/hash/HASH|inlined.5 (result i32) f32.const nan:0x400000 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -340,6 +401,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) f64.const 0 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -350,6 +421,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) f64.const 1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -360,6 +441,16 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) f64.const 1.1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -370,6 +461,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) f64.const 0 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -380,6 +481,16 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) f64.const inf local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -390,6 +501,16 @@ block $~lib/util/hash/HASH|inlined.5 (result i32) f64.const nan:0x8000000000000 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index ad2c95d19a..24f42874a8 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -647,6 +647,8 @@ (local $18 i32) (local $19 f64) (local $20 f64) + i32.const 1 + drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -2052,6 +2054,8 @@ (local $3 i64) (local $4 i64) i32.const 0 + drop + i32.const 0 local.set $1 local.get $0 i64.reinterpret_f64 @@ -2672,6 +2676,8 @@ i32.const 2147483647 i32.and local.set $12 + i32.const 1 + drop local.get $12 i32.const 1073928572 i32.lt_u @@ -3397,6 +3403,8 @@ (local $20 f64) (local $21 f64) (local $22 f64) + i32.const 1 + drop block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -4298,6 +4306,8 @@ (local $23 f64) (local $24 f64) (local $25 f64) + i32.const 1 + drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -4694,6 +4704,8 @@ (local $42 i32) (local $43 i64) (local $44 i64) + i32.const 1 + drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -5586,6 +5598,8 @@ block $~lib/math/NativeMath.sign|inlined.0 (result f64) local.get $0 local.set $1 + i32.const 0 + drop local.get $1 f64.const 0 f64.gt @@ -5750,6 +5764,8 @@ i32.const 2147483647 i32.and local.set $12 + i32.const 1 + drop local.get $12 i32.const 1073928572 i32.lt_u @@ -6533,6 +6549,8 @@ i32.const 2147483647 i32.and local.set $7 + i32.const 1 + drop local.get $7 i32.const 1073928572 i32.lt_u @@ -7278,6 +7296,8 @@ (local $12 f64) (local $13 f64) (local $14 f64) + i32.const 1 + drop block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -8460,6 +8480,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u @@ -9302,6 +9324,8 @@ (local $10 f64) (local $11 i64) (local $12 i32) + i32.const 1 + drop block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -9910,6 +9934,8 @@ (local $14 f64) (local $15 f64) (local $16 f64) + i32.const 1 + drop block $~lib/util/math/log2f_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -10653,6 +10679,8 @@ block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 local.set $1 + i32.const 0 + drop local.get $1 f32.const 0 f32.gt @@ -10760,6 +10788,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u @@ -11499,6 +11529,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 6e61a65980..4091f798e7 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -1571,7 +1571,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -1602,7 +1602,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -1671,7 +1671,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1697,10 +1697,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1721,11 +1721,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1746,7 +1746,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1758,7 +1758,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1779,10 +1779,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1798,11 +1798,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1816,7 +1816,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2094,7 +2094,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -2114,15 +2114,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -2177,7 +2175,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -2221,7 +2219,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -3042,7 +3040,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -3062,15 +3060,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -3112,7 +3108,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -3156,7 +3152,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -3341,7 +3337,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -3359,15 +3355,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -3409,7 +3403,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -3453,7 +3447,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -3667,6 +3661,10 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s if @@ -3745,6 +3743,10 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s if @@ -3937,6 +3939,10 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s if @@ -4008,6 +4014,10 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s if @@ -4176,7 +4186,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -4220,7 +4230,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -4532,7 +4542,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -4576,7 +4586,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -4790,6 +4800,8 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 255 + i32.and i32.const 100 i32.lt_u if @@ -4864,6 +4876,8 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 255 + i32.and i32.const 100 i32.lt_u if @@ -5050,6 +5064,8 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 255 + i32.and i32.const 50 i32.lt_u if @@ -5119,6 +5135,8 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 255 + i32.and i32.const 50 i32.lt_u if @@ -5264,7 +5282,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -5284,15 +5302,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -5347,7 +5363,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -5391,7 +5407,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -5734,7 +5750,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -5754,15 +5770,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -5804,7 +5818,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -5848,7 +5862,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -6066,6 +6080,10 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s if @@ -6144,6 +6162,10 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s if @@ -6336,6 +6358,10 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s if @@ -6407,6 +6433,10 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s if @@ -6575,7 +6605,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -6619,7 +6649,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -6933,7 +6963,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -6977,7 +7007,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -7191,6 +7221,8 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 65535 + i32.and i32.const 100 i32.lt_u if @@ -7265,6 +7297,8 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 65535 + i32.and i32.const 100 i32.lt_u if @@ -7451,6 +7485,8 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 65535 + i32.and i32.const 50 i32.lt_u if @@ -7520,6 +7556,8 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 65535 + i32.and i32.const 50 i32.lt_u if @@ -8851,7 +8889,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -8869,15 +8907,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -8928,7 +8964,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -8972,7 +9008,7 @@ i32.const 16 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -9396,7 +9432,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -9414,15 +9450,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=16 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=16 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -9464,7 +9498,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -9508,7 +9542,7 @@ i32.const 24 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -10717,7 +10751,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -10735,15 +10769,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -10795,7 +10827,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -10840,7 +10872,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -11190,7 +11222,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -11235,7 +11267,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -11899,7 +11931,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -11917,15 +11949,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=12 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=12 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -11977,7 +12007,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -12022,7 +12052,7 @@ i32.const 16 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -12347,7 +12377,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -12365,15 +12395,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=16 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=16 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -12415,7 +12443,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -12460,7 +12488,7 @@ i32.const 24 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index e17acd0e61..38500b8e3a 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -71,6 +71,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -89,6 +91,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -141,6 +145,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -280,6 +286,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -293,6 +301,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -386,6 +396,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -442,6 +454,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -461,6 +475,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -515,6 +531,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -625,6 +643,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -662,6 +682,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -693,6 +715,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -776,6 +800,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -835,50 +861,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -998,6 +1028,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1070,6 +1102,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1174,6 +1208,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1276,6 +1312,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1288,20 +1325,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1310,23 +1349,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1335,11 +1374,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1362,6 +1401,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1379,19 +1420,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1494,6 +1537,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1585,6 +1630,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1608,9 +1655,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1627,6 +1678,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1646,6 +1699,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1658,6 +1713,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1686,6 +1743,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1731,8 +1790,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1767,6 +1830,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1774,6 +1838,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1985,13 +2051,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -2018,9 +2084,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -2077,39 +2142,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2117,13 +2184,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2164,9 +2231,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2323,13 +2389,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2404,9 +2470,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2445,13 +2510,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2526,9 +2591,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2553,13 +2617,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2634,9 +2698,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3106,6 +3169,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3119,6 +3183,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3152,13 +3218,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3169,30 +3235,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3209,37 +3274,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3250,15 +3313,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3275,17 +3338,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3298,16 +3360,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3319,9 +3380,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3383,6 +3443,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3393,6 +3455,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3441,8 +3505,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3484,6 +3552,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3627,6 +3697,7 @@ ) (func $~lib/map/Map#find (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -3638,11 +3709,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -3671,9 +3742,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -3684,6 +3754,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -3708,6 +3786,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -3742,53 +3821,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_s i32.store8 + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load8_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -3800,26 +3887,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -3827,19 +3913,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -3861,6 +3947,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 24 i32.shl @@ -3877,6 +3971,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -3968,6 +4064,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -4102,6 +4206,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -4227,6 +4333,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4326,6 +4434,8 @@ end ) (func $~lib/array/Array#__unchecked_set (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -4374,6 +4484,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 0 @@ -4390,6 +4502,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -4408,14 +4521,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -4423,12 +4538,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load8_s call $~lib/array/Array#__set end @@ -4467,6 +4582,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -4515,6 +4632,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 2 @@ -4531,6 +4650,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -4549,14 +4669,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -4564,12 +4686,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -4760,6 +4882,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 63 ;) (param $0 i32) (param $1 i32) (result i32) @@ -4789,10 +4913,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -4804,11 +4931,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -4837,9 +4964,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -4855,6 +4981,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -4889,53 +5016,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_s i32.store8 + local.get $11 local.get $10 - local.get $9 i32.load8_s offset=1 i32.store8 offset=1 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i32.load8_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -4947,26 +5082,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -4974,19 +5108,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -5008,6 +5142,14 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 24 i32.shl @@ -5024,6 +5166,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store8 offset=1 @@ -5151,6 +5295,7 @@ ) (func $~lib/map/Map#find (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -5162,11 +5307,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -5191,9 +5336,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -5209,6 +5353,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -5243,53 +5388,65 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -5301,26 +5458,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -5328,19 +5484,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -5362,6 +5518,18 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -5374,6 +5542,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -5475,6 +5645,14 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -5491,6 +5669,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -5550,6 +5732,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -5557,8 +5742,14 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -5639,8 +5830,14 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -5741,31 +5938,33 @@ local.set $1 local.get $0 call $~lib/map/Map#values - local.set $2 + local.set $4 i32.const 0 call $~lib/map/Map#constructor - local.set $3 + local.set $5 i32.const 0 call $~lib/map/Map#constructor - local.set $4 + local.set $6 i32.const 0 - local.set $5 + local.set $7 loop $for-loop|4 - local.get $5 + local.get $7 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $8 + local.get $8 if local.get $1 - local.get $5 + local.get $7 call $~lib/array/Array#__get - local.set $6 - local.get $2 - local.get $5 + local.set $9 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $7 + local.set $10 local.get $0 - local.get $6 + local.get $9 call $~lib/map/Map#has i32.eqz if @@ -5777,7 +5976,7 @@ unreachable end local.get $0 - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#has @@ -5790,26 +5989,26 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $6 - local.get $6 + local.get $5 + local.get $9 + local.get $9 call $~lib/map/Map#set - local.get $4 - local.get $7 + local.get $6 + local.get $10 i32.const 20 i32.sub - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|4 end end - local.get $3 + local.get $5 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -5822,7 +6021,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -5836,14 +6035,20 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|6 - local.get $5 + local.get $7 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s + local.set $10 + local.get $10 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -5855,10 +6060,10 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#get i32.const 20 - local.get $5 + local.get $7 i32.const 24 i32.shl i32.const 24 @@ -5875,11 +6080,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -5891,10 +6096,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|6 end end @@ -5912,14 +6117,20 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|8 - local.get $5 + local.get $7 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s + local.set $9 + local.get $9 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -5932,9 +6143,9 @@ unreachable end local.get $0 - local.get $5 + local.get $7 i32.const 10 - local.get $5 + local.get $7 i32.const 24 i32.shl i32.const 24 @@ -5942,7 +6153,7 @@ i32.add call $~lib/map/Map#set local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -5954,11 +6165,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -5970,10 +6181,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|8 end end @@ -6007,11 +6218,11 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -6090,6 +6301,7 @@ ) (func $~lib/map/Map#find (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -6101,11 +6313,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -6132,9 +6344,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -6145,6 +6356,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -6167,6 +6386,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -6201,53 +6421,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_u i32.store8 + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load8_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -6259,26 +6487,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -6286,19 +6513,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -6320,6 +6547,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 255 i32.and @@ -6334,6 +6569,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -6425,6 +6662,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -6473,6 +6718,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -6521,6 +6768,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 0 @@ -6537,6 +6786,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -6555,14 +6805,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -6570,12 +6822,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load8_u call $~lib/array/Array#__set end @@ -6599,6 +6851,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -6617,14 +6870,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -6632,12 +6887,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -6756,10 +7011,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -6771,11 +7029,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -6802,9 +7060,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -6820,6 +7077,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -6854,53 +7112,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_u i32.store8 + local.get $11 local.get $10 - local.get $9 i32.load8_u offset=1 i32.store8 offset=1 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i32.load8_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -6912,26 +7178,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -6939,19 +7204,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -6973,6 +7238,14 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 255 i32.and @@ -6987,6 +7260,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store8 offset=1 @@ -7084,6 +7359,14 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -7098,6 +7381,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -7157,6 +7444,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -7164,8 +7454,12 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 255 + i32.and i32.const 100 i32.lt_u + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -7242,8 +7536,12 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 255 + i32.and i32.const 100 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -7338,31 +7636,33 @@ local.set $1 local.get $0 call $~lib/map/Map#values - local.set $2 + local.set $4 i32.const 0 call $~lib/map/Map#constructor - local.set $3 + local.set $5 i32.const 0 call $~lib/map/Map#constructor - local.set $4 + local.set $6 i32.const 0 - local.set $5 + local.set $7 loop $for-loop|4 - local.get $5 + local.get $7 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $8 + local.get $8 if local.get $1 - local.get $5 + local.get $7 call $~lib/array/Array#__get - local.set $6 - local.get $2 - local.get $5 + local.set $9 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $7 + local.set $10 local.get $0 - local.get $6 + local.get $9 call $~lib/map/Map#has i32.eqz if @@ -7374,7 +7674,7 @@ unreachable end local.get $0 - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#has @@ -7387,26 +7687,26 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $6 - local.get $6 + local.get $5 + local.get $9 + local.get $9 call $~lib/map/Map#set - local.get $4 - local.get $7 + local.get $6 + local.get $10 i32.const 20 i32.sub - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|4 end end - local.get $3 + local.get $5 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -7419,7 +7719,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -7433,14 +7733,18 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|6 - local.get $5 + local.get $7 + i32.const 255 + i32.and i32.const 50 i32.lt_u + local.set $10 + local.get $10 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -7452,10 +7756,10 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#get i32.const 20 - local.get $5 + local.get $7 i32.const 255 i32.and i32.add @@ -7470,11 +7774,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -7486,10 +7790,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|6 end end @@ -7507,14 +7811,18 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|8 - local.get $5 + local.get $7 + i32.const 255 + i32.and i32.const 50 i32.lt_u + local.set $9 + local.get $9 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -7527,15 +7835,15 @@ unreachable end local.get $0 - local.get $5 + local.get $7 i32.const 10 - local.get $5 + local.get $7 i32.const 255 i32.and i32.add call $~lib/map/Map#set local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -7547,11 +7855,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -7563,10 +7871,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|8 end end @@ -7600,11 +7908,11 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -7705,6 +8013,7 @@ ) (func $~lib/map/Map#find (; 104 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -7716,11 +8025,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -7749,9 +8058,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -7762,6 +8070,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -7786,6 +8104,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -7820,53 +8139,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_s i32.store16 + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load16_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -7878,26 +8207,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -7905,19 +8233,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -7939,6 +8267,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 16 i32.shl @@ -7955,6 +8293,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -8046,6 +8386,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -8096,6 +8446,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 111 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -8144,6 +8496,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 1 @@ -8160,6 +8514,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -8178,14 +8533,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -8193,12 +8550,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load16_s call $~lib/array/Array#__set end @@ -8222,6 +8579,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -8240,14 +8598,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -8255,12 +8615,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -8379,10 +8739,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 121 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -8394,11 +8757,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -8427,9 +8790,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -8445,6 +8807,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -8479,53 +8842,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_s i32.store16 + local.get $11 local.get $10 - local.get $9 i32.load16_s offset=2 i32.store16 offset=2 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i32.load16_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -8537,26 +8910,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -8564,19 +8936,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -8598,6 +8970,16 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 16 i32.shl @@ -8614,6 +8996,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store16 offset=2 @@ -8711,6 +9095,16 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -8727,6 +9121,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -8786,6 +9184,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -8793,8 +9194,14 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -8875,8 +9282,14 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -8977,31 +9390,33 @@ local.set $1 local.get $0 call $~lib/map/Map#values - local.set $2 + local.set $4 i32.const 0 call $~lib/map/Map#constructor - local.set $3 + local.set $5 i32.const 0 call $~lib/map/Map#constructor - local.set $4 + local.set $6 i32.const 0 - local.set $5 + local.set $7 loop $for-loop|4 - local.get $5 + local.get $7 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $8 + local.get $8 if local.get $1 - local.get $5 + local.get $7 call $~lib/array/Array#__get - local.set $6 - local.get $2 - local.get $5 + local.set $9 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $7 + local.set $10 local.get $0 - local.get $6 + local.get $9 call $~lib/map/Map#has i32.eqz if @@ -9013,7 +9428,7 @@ unreachable end local.get $0 - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#has @@ -9026,26 +9441,26 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $6 - local.get $6 + local.get $5 + local.get $9 + local.get $9 call $~lib/map/Map#set - local.get $4 - local.get $7 + local.get $6 + local.get $10 i32.const 20 i32.sub - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|4 end end - local.get $3 + local.get $5 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -9058,7 +9473,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -9072,14 +9487,20 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|6 - local.get $5 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s + local.set $10 + local.get $10 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -9091,10 +9512,10 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#get i32.const 20 - local.get $5 + local.get $7 i32.const 16 i32.shl i32.const 16 @@ -9111,11 +9532,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -9127,10 +9548,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|6 end end @@ -9148,14 +9569,20 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|8 - local.get $5 + local.get $7 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s + local.set $9 + local.get $9 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -9168,9 +9595,9 @@ unreachable end local.get $0 - local.get $5 + local.get $7 i32.const 10 - local.get $5 + local.get $7 i32.const 16 i32.shl i32.const 16 @@ -9178,7 +9605,7 @@ i32.add call $~lib/map/Map#set local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -9190,11 +9617,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -9206,10 +9633,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|8 end end @@ -9243,11 +9670,11 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -9326,6 +9753,7 @@ ) (func $~lib/map/Map#find (; 129 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -9337,11 +9765,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -9368,9 +9796,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -9381,6 +9808,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -9403,6 +9840,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -9437,53 +9875,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_u i32.store16 + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load16_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -9495,26 +9943,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -9522,19 +9969,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -9556,6 +10003,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 65535 i32.and @@ -9570,6 +10027,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -9661,6 +10120,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -9709,6 +10178,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 136 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -9757,6 +10228,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 1 @@ -9773,6 +10246,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -9791,14 +10265,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -9806,12 +10282,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load16_u call $~lib/array/Array#__set end @@ -9835,6 +10311,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -9853,14 +10330,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -9868,12 +10347,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -9992,10 +10471,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 146 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -10006,12 +10488,12 @@ i32.mul i32.add i32.load - local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + local.set $3 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -10038,9 +10520,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -10056,6 +10537,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -10090,53 +10572,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_u i32.store16 + local.get $11 local.get $10 - local.get $9 i32.load16_u offset=2 i32.store16 offset=2 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i32.load16_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -10148,26 +10640,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -10175,19 +10666,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -10209,6 +10700,16 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i32.const 65535 i32.and @@ -10223,6 +10724,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store16 offset=2 @@ -10320,6 +10823,16 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -10334,6 +10847,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -10393,6 +10910,9 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -10400,8 +10920,12 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 65535 + i32.and i32.const 100 i32.lt_u + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -10478,8 +11002,12 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 65535 + i32.and i32.const 100 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -10574,31 +11102,33 @@ local.set $1 local.get $0 call $~lib/map/Map#values - local.set $2 + local.set $4 i32.const 0 call $~lib/map/Map#constructor - local.set $3 + local.set $5 i32.const 0 call $~lib/map/Map#constructor - local.set $4 + local.set $6 i32.const 0 - local.set $5 + local.set $7 loop $for-loop|4 - local.get $5 + local.get $7 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $8 + local.get $8 if local.get $1 - local.get $5 + local.get $7 call $~lib/array/Array#__get - local.set $6 - local.get $2 - local.get $5 + local.set $9 + local.get $4 + local.get $7 call $~lib/array/Array#__get - local.set $7 + local.set $10 local.get $0 - local.get $6 + local.get $9 call $~lib/map/Map#has i32.eqz if @@ -10610,7 +11140,7 @@ unreachable end local.get $0 - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#has @@ -10623,26 +11153,26 @@ call $~lib/builtins/abort unreachable end - local.get $3 - local.get $6 - local.get $6 + local.get $5 + local.get $9 + local.get $9 call $~lib/map/Map#set - local.get $4 - local.get $7 + local.get $6 + local.get $10 i32.const 20 i32.sub - local.get $7 + local.get $10 i32.const 20 i32.sub call $~lib/map/Map#set - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|4 end end - local.get $3 + local.get $5 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -10655,7 +11185,7 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 call $~lib/map/Map#get:size i32.const 100 i32.eq @@ -10669,14 +11199,18 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|6 - local.get $5 + local.get $7 + i32.const 65535 + i32.and i32.const 50 i32.lt_u + local.set $10 + local.get $10 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -10688,10 +11222,10 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#get i32.const 20 - local.get $5 + local.get $7 i32.const 65535 i32.and i32.add @@ -10706,11 +11240,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -10722,10 +11256,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|6 end end @@ -10743,14 +11277,18 @@ unreachable end i32.const 0 - local.set $5 + local.set $7 loop $for-loop|8 - local.get $5 + local.get $7 + i32.const 65535 + i32.and i32.const 50 i32.lt_u + local.set $9 + local.get $9 if local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -10763,15 +11301,15 @@ unreachable end local.get $0 - local.get $5 + local.get $7 i32.const 10 - local.get $5 + local.get $7 i32.const 65535 i32.and i32.add call $~lib/map/Map#set local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -10783,11 +11321,11 @@ unreachable end local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#delete drop local.get $0 - local.get $5 + local.get $7 call $~lib/map/Map#has i32.eqz i32.eqz @@ -10799,10 +11337,10 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $7 i32.const 1 i32.add - local.set $5 + local.set $7 br $for-loop|8 end end @@ -10836,11 +11374,11 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release - local.get $3 + local.get $5 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -10852,6 +11390,18 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -10868,6 +11418,18 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -10895,6 +11457,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -10913,14 +11476,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -10928,12 +11493,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load call $~lib/array/Array#__set end @@ -10957,6 +11522,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -10975,14 +11541,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -10990,12 +11558,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -11025,6 +11593,18 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -11037,6 +11617,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -11096,6 +11680,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -11105,6 +11690,8 @@ local.get $1 i32.const 100 i32.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -11179,6 +11766,8 @@ local.get $1 i32.const 100 i32.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -11281,17 +11870,19 @@ local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 call $~lib/array/Array#__get - local.set $6 + local.set $7 local.get $2 local.get $5 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 - local.get $6 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -11303,7 +11894,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#has @@ -11317,14 +11908,14 @@ unreachable end local.get $3 - local.get $6 - local.get $6 + local.get $7 + local.get $7 call $~lib/map/Map#set local.get $4 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -11367,6 +11958,8 @@ local.get $5 i32.const 50 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -11439,6 +12032,8 @@ local.get $5 i32.const 50 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -11608,6 +12203,7 @@ ) (func $~lib/map/Map#find (; 161 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -11619,11 +12215,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -11648,9 +12244,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -11661,6 +12256,18 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -11681,6 +12288,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -11715,53 +12323,65 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -11773,26 +12393,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -11800,19 +12419,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -11834,6 +12453,18 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -11846,6 +12477,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -11937,6 +12570,18 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -11983,6 +12628,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 168 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -12031,6 +12678,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 2 @@ -12047,6 +12696,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12065,14 +12715,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -12080,12 +12732,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load call $~lib/array/Array#__set end @@ -12109,6 +12761,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12127,14 +12780,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -12142,12 +12797,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -12266,10 +12921,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 178 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -12281,11 +12939,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -12310,9 +12968,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -12328,6 +12985,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -12362,53 +13020,65 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -12420,26 +13090,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -12447,19 +13116,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -12481,6 +13150,18 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -12493,6 +13174,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -12590,6 +13273,18 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.6 @@ -12602,6 +13297,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -12661,6 +13360,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -12670,6 +13370,8 @@ local.get $1 i32.const 100 i32.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -12744,6 +13446,8 @@ local.get $1 i32.const 100 i32.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -12846,17 +13550,19 @@ local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 call $~lib/array/Array#__get - local.set $6 + local.set $7 local.get $2 local.get $5 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 - local.get $6 + local.get $7 call $~lib/map/Map#has i32.eqz if @@ -12868,7 +13574,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#has @@ -12882,14 +13588,14 @@ unreachable end local.get $3 - local.get $6 - local.get $6 + local.get $7 + local.get $7 call $~lib/map/Map#set local.get $4 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -12932,6 +13638,8 @@ local.get $5 i32.const 50 i32.lt_u + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -13004,6 +13712,8 @@ local.get $5 i32.const 50 i32.lt_u + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -13261,6 +13971,7 @@ ) (func $~lib/map/Map#find (; 187 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -13272,11 +13983,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=12 i32.const 1 @@ -13301,9 +14012,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -13314,6 +14024,20 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -13332,9 +14056,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -13369,53 +14094,67 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store + local.get $11 local.get $10 - local.get $9 i32.load offset=8 i32.store offset=8 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=12 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -13427,26 +14166,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -13454,19 +14192,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -13489,6 +14227,20 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -13501,6 +14253,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=8 @@ -13592,6 +14346,20 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -13638,6 +14406,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 194 ;) (param $0 i32) (param $1 i32) (param $2 i64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -13686,6 +14456,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 3 @@ -13702,6 +14474,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -13720,14 +14493,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -13735,12 +14510,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i64.load call $~lib/array/Array#__set end @@ -13764,6 +14539,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -13782,14 +14558,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -13797,12 +14575,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=8 call $~lib/array/Array#__set end @@ -13921,10 +14699,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 204 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -13936,11 +14717,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=16 i32.const 1 @@ -13965,9 +14746,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -13981,9 +14761,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -14018,53 +14799,67 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store + local.get $11 local.get $10 - local.get $9 i64.load offset=8 i64.store offset=8 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=16 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -14076,26 +14871,25 @@ i32.const 24 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -14103,19 +14897,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -14138,6 +14932,20 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -14150,6 +14958,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i64.store offset=8 @@ -14248,6 +15058,20 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.6 @@ -14260,6 +15084,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=12 @@ -14319,6 +15147,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -14328,6 +15157,8 @@ local.get $1 i64.const 100 i64.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -14404,6 +15235,8 @@ local.get $1 i64.const 100 i64.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -14509,6 +15342,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $7 + local.get $7 if local.get $2 local.get $6 @@ -14517,7 +15352,7 @@ local.get $3 local.get $6 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 local.get $1 call $~lib/map/Map#has @@ -14531,7 +15366,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub i64.extend_i32_s @@ -14550,10 +15385,10 @@ local.get $1 call $~lib/map/Map#set local.get $5 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -14596,6 +15431,8 @@ local.get $1 i64.const 50 i64.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -14669,6 +15506,8 @@ local.get $1 i64.const 50 i64.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -14839,6 +15678,7 @@ ) (func $~lib/map/Map#find (; 212 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -14850,11 +15690,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=12 i32.const 1 @@ -14879,9 +15719,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -14892,6 +15731,20 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -14910,9 +15763,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -14947,53 +15801,67 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store + local.get $11 local.get $10 - local.get $9 i32.load offset=8 i32.store offset=8 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=12 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -15005,26 +15873,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -15032,19 +15899,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -15067,6 +15934,20 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -15079,6 +15960,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=8 @@ -15170,6 +16053,20 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -15216,6 +16113,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 219 ;) (param $0 i32) (param $1 i32) (param $2 i64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -15264,6 +16163,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 3 @@ -15280,6 +16181,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -15298,14 +16200,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -15313,12 +16217,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i64.load call $~lib/array/Array#__set end @@ -15342,6 +16246,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -15360,14 +16265,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -15375,12 +16282,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=8 call $~lib/array/Array#__set end @@ -15499,10 +16406,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 229 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -15514,11 +16424,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=16 i32.const 1 @@ -15543,9 +16453,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -15559,9 +16468,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -15596,53 +16506,67 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store + local.get $11 local.get $10 - local.get $9 i64.load offset=8 i64.store offset=8 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=16 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -15654,26 +16578,25 @@ i32.const 24 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -15681,19 +16604,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -15716,6 +16639,20 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -15728,6 +16665,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i64.store offset=8 @@ -15826,6 +16765,20 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.6 @@ -15838,6 +16791,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=12 @@ -15897,6 +16854,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -15906,6 +16864,8 @@ local.get $1 i64.const 100 i64.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -15982,6 +16942,8 @@ local.get $1 i64.const 100 i64.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -16087,6 +17049,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $7 + local.get $7 if local.get $2 local.get $6 @@ -16095,7 +17059,7 @@ local.get $3 local.get $6 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 local.get $1 call $~lib/map/Map#has @@ -16109,7 +17073,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub i64.extend_i32_s @@ -16128,10 +17092,10 @@ local.get $1 call $~lib/map/Map#set local.get $5 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -16174,6 +17138,8 @@ local.get $1 i64.const 50 i64.lt_u + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -16247,6 +17213,8 @@ local.get $1 i64.const 50 i64.lt_u + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -16417,6 +17385,7 @@ ) (func $~lib/map/Map#find (; 237 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -16428,11 +17397,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -16457,9 +17426,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -16470,6 +17438,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -16489,9 +17465,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 i32) + (local $11 i32) + (local $12 f32) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -16526,54 +17503,62 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f32.load f32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 f32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=8 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -16585,26 +17570,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -16612,19 +17596,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -16647,6 +17631,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $3 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -16660,6 +17652,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=4 @@ -16751,6 +17745,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -16798,6 +17800,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 244 ;) (param $0 i32) (param $1 i32) (param $2 f32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -16846,6 +17850,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 2 @@ -16862,6 +17868,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -16880,14 +17887,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -16895,12 +17904,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 f32.load call $~lib/array/Array#__set end @@ -16924,6 +17933,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -16942,14 +17952,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 12 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -16957,12 +17969,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=4 call $~lib/array/Array#__set end @@ -17081,10 +18093,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 254 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -17096,11 +18111,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -17125,9 +18140,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -17141,9 +18155,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 i32) + (local $11 i32) + (local $12 f32) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -17178,54 +18193,62 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f32.load f32.store + local.get $11 local.get $10 - local.get $9 f32.load offset=4 f32.store offset=4 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 f32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=8 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -17237,26 +18260,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -17264,19 +18286,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -17299,6 +18321,14 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $3 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17312,6 +18342,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 f32.store offset=4 @@ -17410,6 +18442,14 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17423,6 +18463,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -17482,6 +18526,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -17491,6 +18536,8 @@ local.get $1 f32.const 100 f32.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -17567,6 +18614,8 @@ local.get $1 f32.const 100 f32.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -17672,6 +18721,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $7 + local.get $7 if local.get $2 local.get $6 @@ -17680,7 +18731,7 @@ local.get $3 local.get $6 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 local.get $1 call $~lib/map/Map#has @@ -17694,7 +18745,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub f32.convert_i32_s @@ -17713,10 +18764,10 @@ local.get $1 call $~lib/map/Map#set local.get $5 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -17759,6 +18810,8 @@ local.get $1 f32.const 50 f32.lt + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -17832,6 +18885,8 @@ local.get $1 f32.const 50 f32.lt + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -18002,6 +19057,7 @@ ) (func $~lib/map/Map#find (; 262 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -18013,11 +19069,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=12 i32.const 1 @@ -18042,9 +19098,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -18055,6 +19110,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -18074,9 +19139,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f64) - (local $12 i32) + (local $11 i32) + (local $12 f64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -18111,54 +19177,64 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=12 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f64.load f64.store + local.get $11 local.get $10 - local.get $9 i32.load offset=8 i32.store offset=8 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 f64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=12 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -18170,26 +19246,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -18197,19 +19272,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -18232,6 +19307,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -18245,6 +19330,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 i32.store offset=8 @@ -18336,6 +19423,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -18383,6 +19480,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 269 ;) (param $0 i32) (param $1 i32) (param $2 f64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -18431,6 +19530,8 @@ local.get $0 i32.load offset=12 local.set $2 + i32.const 0 + drop local.get $0 local.get $1 i32.const 3 @@ -18447,6 +19548,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -18465,14 +19567,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -18480,12 +19584,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 f64.load call $~lib/array/Array#__set end @@ -18509,6 +19613,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -18527,14 +19632,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=12 i32.const 1 i32.and @@ -18542,12 +19649,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load offset=8 call $~lib/array/Array#__set end @@ -18666,10 +19773,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/map/Map#find (; 279 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -18681,11 +19791,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=16 i32.const 1 @@ -18710,9 +19820,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -18726,9 +19835,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f64) - (local $12 i32) + (local $11 i32) + (local $12 f64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -18763,54 +19873,64 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=16 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f64.load f64.store + local.get $11 local.get $10 - local.get $9 f64.load offset=8 f64.store offset=8 block $~lib/util/hash/HASH|inlined.5 (result i32) - local.get $9 + local.get $10 f64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=16 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -18822,26 +19942,25 @@ i32.const 24 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -18849,19 +19968,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -18884,6 +20003,16 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -18897,6 +20026,8 @@ local.set $5 local.get $5 if + i32.const 0 + drop local.get $5 local.get $2 f64.store offset=8 @@ -18995,6 +20126,16 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -19008,6 +20149,10 @@ i32.const 0 return end + i32.const 0 + drop + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=12 @@ -19067,6 +20212,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/map/Map#constructor local.set $0 @@ -19076,6 +20222,8 @@ local.get $1 f64.const 100 f64.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -19152,6 +20300,8 @@ local.get $1 f64.const 100 f64.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -19257,6 +20407,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $7 + local.get $7 if local.get $2 local.get $6 @@ -19265,7 +20417,7 @@ local.get $3 local.get $6 call $~lib/array/Array#__get - local.set $7 + local.set $8 local.get $0 local.get $1 call $~lib/map/Map#has @@ -19279,7 +20431,7 @@ unreachable end local.get $0 - local.get $7 + local.get $8 i32.const 20 i32.sub f64.convert_i32_s @@ -19298,10 +20450,10 @@ local.get $1 call $~lib/map/Map#set local.get $5 - local.get $7 + local.get $8 i32.const 20 i32.sub - local.get $7 + local.get $8 i32.const 20 i32.sub call $~lib/map/Map#set @@ -19344,6 +20496,8 @@ local.get $1 f64.const 50 f64.lt + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -19417,6 +20571,8 @@ local.get $1 f64.const 50 f64.lt + local.set $6 + local.get $6 if local.get $0 local.get $1 @@ -19576,6 +20732,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -19646,6 +20804,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -19667,15 +20827,19 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 289 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 290 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 291 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19686,6 +20850,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19699,6 +20865,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19712,12 +20880,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 294 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 295 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19728,6 +20899,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19741,12 +20914,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 297 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 298 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19757,6 +20933,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19770,12 +20948,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 300 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 301 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19786,6 +20967,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19799,12 +20982,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 303 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 304 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19815,6 +21001,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19828,12 +21016,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 306 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 307 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19844,6 +21035,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19857,12 +21050,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 309 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 310 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19873,6 +21069,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19886,12 +21084,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 312 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 313 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19902,6 +21103,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -19915,12 +21118,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/map/Map#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -19931,6 +21137,8 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index bd70dc0c69..97f2c4bbaa 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -6843,7 +6843,7 @@ i64.or end local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $5 i64.gt_s @@ -6869,7 +6869,7 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end end local.get $2 @@ -7057,7 +7057,7 @@ i32.shl end local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $5 i32.gt_s @@ -7083,7 +7083,7 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end end local.get $2 @@ -8835,7 +8835,7 @@ i64.or end local.set $4 - block $break|0 + block $do-break|0 local.get $3 local.get $5 i64.lt_s @@ -8845,11 +8845,11 @@ i64.const 1 i64.add i64.eq - br_if $break|0 + br_if $do-break|0 local.get $0 return end - loop $continue|1 + loop $while-continue|1 local.get $3 local.get $5 i64.gt_s @@ -8879,7 +8879,7 @@ i64.const 1 i64.sub local.set $3 - br $continue|1 + br $while-continue|1 end end local.get $2 @@ -9086,7 +9086,7 @@ local.set $6 i32.const 0 local.set $4 - block $break|0 + block $do-break|0 local.get $3 local.get $5 i32.lt_s @@ -9096,11 +9096,11 @@ i32.const 1 i32.add i32.eq - br_if $break|0 + br_if $do-break|0 local.get $0 return end - loop $continue|1 + loop $while-continue|1 local.get $3 local.get $5 i32.gt_s @@ -9130,7 +9130,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|1 + br $while-continue|1 end end local.get $2 @@ -11353,7 +11353,7 @@ (local $2 i64) i64.const 1 local.set $2 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 0 i32.gt_s @@ -11375,7 +11375,7 @@ local.get $0 i64.mul local.set $0 - br $continue|0 + br $while-continue|0 end end local.get $2 @@ -11394,7 +11394,7 @@ local.set $1 f32.const 1 local.set $2 - loop $continue|0 + loop $while-continue|0 local.get $1 if local.get $2 @@ -11414,7 +11414,7 @@ local.get $0 f32.mul local.set $0 - br $continue|0 + br $while-continue|0 end end local.get $3 @@ -11440,7 +11440,7 @@ local.set $1 f64.const 1 local.set $2 - loop $continue|0 + loop $while-continue|0 local.get $1 if local.get $2 @@ -11460,7 +11460,7 @@ local.get $0 f64.mul local.set $0 - br $continue|0 + br $while-continue|0 end end local.get $3 diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index ad2e45b0be..20217050cc 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -372,6 +372,8 @@ f64.ne return end + i32.const 1 + drop local.get $0 local.get $1 local.get $2 @@ -600,6 +602,10 @@ f32.ne return end + i32.const 0 + drop + i32.const 1 + drop local.get $0 local.get $1 local.get $2 @@ -1332,6 +1338,8 @@ (local $18 i32) (local $19 f64) (local $20 f64) + i32.const 1 + drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -1946,6 +1954,8 @@ (local $12 f64) (local $13 f64) (local $14 f64) + i32.const 1 + drop block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -4758,6 +4768,8 @@ i32.const 2147483647 i32.and local.set $12 + i32.const 1 + drop local.get $12 i32.const 1073928572 i32.lt_u @@ -5253,6 +5265,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u @@ -6129,6 +6143,8 @@ (local $20 f64) (local $21 f64) (local $22 f64) + i32.const 1 + drop block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -6808,6 +6824,8 @@ (local $10 f64) (local $11 i64) (local $12 i32) + i32.const 1 + drop block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -8463,6 +8481,8 @@ (local $23 f64) (local $24 f64) (local $25 f64) + i32.const 1 + drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -8830,6 +8850,8 @@ (local $14 f64) (local $15 f64) (local $16 f64) + i32.const 1 + drop block $~lib/util/math/log2f_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -9097,7 +9119,8 @@ (local $7 i64) (local $8 f64) (local $9 i64) - (local $10 i64) + (local $10 i32) + (local $11 i64) local.get $0 i64.reinterpret_f64 local.set $2 @@ -9239,13 +9262,13 @@ i64.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i64.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i64.ge_u @@ -9272,9 +9295,8 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -9298,13 +9320,13 @@ i64.const 11 i64.shl i64.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i64.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i64.shl local.set $2 local.get $4 @@ -9378,6 +9400,7 @@ (local $8 f32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 i32.reinterpret_f32 local.set $2 @@ -9515,13 +9538,13 @@ i32.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i32.ge_u @@ -9548,9 +9571,8 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -9574,13 +9596,13 @@ i32.const 8 i32.shl i32.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i32.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i32.shl local.set $2 local.get $4 @@ -9669,6 +9691,8 @@ (local $42 i32) (local $43 i64) (local $44 i64) + i32.const 1 + drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -11376,6 +11400,8 @@ block $~lib/math/NativeMath.sign|inlined.0 (result f64) local.get $0 local.set $4 + i32.const 0 + drop local.get $4 f64.const 0 f64.gt @@ -11419,6 +11445,8 @@ block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 local.set $4 + i32.const 0 + drop local.get $4 f32.const 0 f32.gt @@ -11450,8 +11478,9 @@ (local $7 f64) (local $8 i64) (local $9 i32) - (local $10 i64) - (local $11 f64) + (local $10 i32) + (local $11 i64) + (local $12 f64) local.get $0 i64.reinterpret_f64 local.set $2 @@ -11585,93 +11614,95 @@ end i32.const 0 local.set $9 - block $break|0 - local.get $4 - local.get $5 - i64.lt_s - if + block $do-break|0 + loop $do-continue|0 local.get $4 - i64.const 1 - i64.add local.get $5 - i64.eq + i64.lt_s if - br $break|0 + local.get $4 + i64.const 1 + i64.add + local.get $5 + i64.eq + if + br $do-break|0 + end + local.get $0 + return end - local.get $0 - return - end - block $break|1 - loop $continue|1 + loop $while-continue|1 local.get $4 local.get $5 i64.gt_s - i32.eqz - br_if $break|1 - local.get $8 - local.get $3 - i64.ge_u + local.set $10 + local.get $10 if local.get $8 local.get $3 - i64.sub + i64.ge_u + if + local.get $8 + local.get $3 + i64.sub + local.set $8 + local.get $9 + i32.const 1 + i32.add + local.set $9 + end + local.get $8 + i64.const 1 + i64.shl local.set $8 local.get $9 i32.const 1 - i32.add + i32.shl local.set $9 + local.get $4 + i64.const 1 + i64.sub + local.set $4 + br $while-continue|1 end + end + local.get $8 + local.get $3 + i64.ge_u + if local.get $8 - i64.const 1 - i64.shl + local.get $3 + i64.sub local.set $8 local.get $9 i32.const 1 - i32.shl + i32.add local.set $9 + end + local.get $8 + i64.const 0 + i64.eq + if + i64.const -60 + local.set $4 + else + local.get $8 + i64.const 11 + i64.shl + i64.clz + local.set $11 local.get $4 - i64.const 1 + local.get $11 i64.sub local.set $4 - br $continue|1 + local.get $8 + local.get $11 + i64.shl + local.set $8 end - unreachable - end - local.get $8 - local.get $3 - i64.ge_u - if - local.get $8 - local.get $3 - i64.sub - local.set $8 - local.get $9 - i32.const 1 - i32.add - local.set $9 - end - local.get $8 - i64.const 0 - i64.eq - if - i64.const -60 - local.set $4 - else - local.get $8 - i64.const 11 - i64.shl - i64.clz - local.set $10 - local.get $4 - local.get $10 - i64.sub - local.set $4 - local.get $8 - local.get $10 - i64.shl - local.set $8 + br $do-break|0 end - br $break|0 + unreachable end local.get $4 i64.const 0 @@ -11708,7 +11739,7 @@ local.get $0 local.get $0 f64.add - local.set $11 + local.set $12 local.get $4 local.get $5 i64.eq @@ -11721,13 +11752,13 @@ local.get $5 i64.eq if (result i32) - local.get $11 + local.get $12 local.get $1 f64.gt if (result i32) i32.const 1 else - local.get $11 + local.get $12 local.get $1 f64.eq if (result i32) @@ -11903,93 +11934,95 @@ end i32.const 0 local.set $8 - block $break|0 - local.get $4 - local.get $5 - i32.lt_s - if + block $do-break|0 + loop $do-continue|0 local.get $4 - i32.const 1 - i32.add local.get $5 - i32.eq + i32.lt_s if - br $break|0 + local.get $4 + i32.const 1 + i32.add + local.get $5 + i32.eq + if + br $do-break|0 + end + local.get $0 + return end - local.get $0 - return - end - block $break|1 - loop $continue|1 + loop $while-continue|1 local.get $4 local.get $5 i32.gt_s - i32.eqz - br_if $break|1 - local.get $7 - local.get $3 - i32.ge_u + local.set $9 + local.get $9 if local.get $7 local.get $3 - i32.sub + i32.ge_u + if + local.get $7 + local.get $3 + i32.sub + local.set $7 + local.get $8 + i32.const 1 + i32.add + local.set $8 + end + local.get $7 + i32.const 1 + i32.shl local.set $7 local.get $8 i32.const 1 - i32.add + i32.shl local.set $8 + local.get $4 + i32.const 1 + i32.sub + local.set $4 + br $while-continue|1 end + end + local.get $7 + local.get $3 + i32.ge_u + if local.get $7 - i32.const 1 - i32.shl + local.get $3 + i32.sub local.set $7 local.get $8 i32.const 1 - i32.shl + i32.add local.set $8 + end + local.get $7 + i32.const 0 + i32.eq + if + i32.const -30 + local.set $4 + else + local.get $7 + i32.const 8 + i32.shl + i32.clz + local.set $9 local.get $4 - i32.const 1 + local.get $9 i32.sub local.set $4 - br $continue|1 + local.get $7 + local.get $9 + i32.shl + local.set $7 end - unreachable - end - local.get $7 - local.get $3 - i32.ge_u - if - local.get $7 - local.get $3 - i32.sub - local.set $7 - local.get $8 - i32.const 1 - i32.add - local.set $8 - end - local.get $7 - i32.const 0 - i32.eq - if - i32.const -30 - local.set $4 - else - local.get $7 - i32.const 8 - i32.shl - i32.clz - local.set $9 - local.get $4 - local.get $9 - i32.sub - local.set $4 - local.get $7 - local.get $9 - i32.shl - local.set $7 + br $do-break|0 end - br $break|0 + unreachable end local.get $4 i32.const 0 @@ -12229,6 +12262,8 @@ i32.const 2147483647 i32.and local.set $12 + i32.const 1 + drop local.get $12 i32.const 1073928572 i32.lt_u @@ -12725,6 +12760,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u @@ -13798,6 +13835,8 @@ i32.const 2147483647 i32.and local.set $7 + i32.const 1 + drop local.get $7 i32.const 1073928572 i32.lt_u @@ -14174,6 +14213,8 @@ f32.demote_f64 return end + i32.const 1 + drop local.get $1 i32.const 1081824209 i32.le_u @@ -15188,6 +15229,8 @@ i32.const 2147483647 i32.and local.set $12 + i32.const 1 + drop local.get $12 i32.const 1073928572 i32.lt_u @@ -15630,6 +15673,8 @@ (local $3 i64) (local $4 i64) i32.const 0 + drop + i32.const 0 local.set $1 local.get $0 i64.reinterpret_f64 @@ -15739,6 +15784,8 @@ (local $4 i32) i64.const 1 local.set $2 + i32.const 1 + drop local.get $1 i32.const 0 i32.lt_s @@ -15924,13 +15971,13 @@ local.get $2 return end - block $break|2 - loop $continue|2 - local.get $1 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $1 + i32.const 0 + i32.gt_s + local.set $3 + local.get $3 + if local.get $1 i32.const 1 i32.and @@ -15948,15 +15995,15 @@ local.get $0 i64.mul local.set $0 - br $continue|2 + br $while-continue|2 end - unreachable end local.get $2 ) (func $~lib/math/ipow32f (; 175 ;) (param $0 f32) (param $1 i32) (result f32) (local $2 i32) (local $3 f32) + (local $4 i32) local.get $1 i32.const 31 i32.shr_s @@ -15969,11 +16016,11 @@ local.set $1 f32.const 1 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + local.set $4 + local.get $4 + if local.get $3 local.get $0 f32.const 1 @@ -15991,9 +16038,8 @@ local.get $0 f32.mul local.set $0 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 if (result f32) @@ -16007,6 +16053,7 @@ (func $~lib/math/ipow64f (; 176 ;) (param $0 f64) (param $1 i32) (result f64) (local $2 i32) (local $3 f64) + (local $4 i32) local.get $1 i32.const 31 i32.shr_s @@ -16019,11 +16066,11 @@ local.set $1 f64.const 1 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + local.set $4 + local.get $4 + if local.get $3 local.get $0 f64.const 1 @@ -16041,9 +16088,8 @@ local.get $0 f64.mul local.set $0 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 if (result f64) @@ -16056,9 +16102,10 @@ ) (func $start:std/math (; 177 ;) (local $0 i32) - (local $1 f64) - (local $2 i64) - (local $3 f32) + (local $1 i32) + (local $2 f64) + (local $3 i64) + (local $4 f32) f64.const 2.718281828459045 global.get $~lib/bindings/Math/E f64.const 0 @@ -43558,14 +43605,16 @@ f64.convert_i32_s f64.const 1e6 f64.lt + local.set $1 + local.get $1 if call $~lib/math/NativeMath.random - local.set $1 - local.get $1 + local.set $2 + local.get $2 f64.const 0 f64.ge if (result i32) - local.get $1 + local.get $2 f64.const 1 f64.lt else @@ -43589,8 +43638,8 @@ end call $~lib/bindings/Math/random i64.reinterpret_f64 - local.set $2 - local.get $2 + local.set $3 + local.get $3 call $~lib/math/NativeMath.seedRandom i32.const 0 local.set $0 @@ -43599,14 +43648,16 @@ f64.convert_i32_s f64.const 1e6 f64.lt + local.set $1 + local.get $1 if call $~lib/math/NativeMathf.random - local.set $3 - local.get $3 + local.set $4 + local.get $4 f32.const 0 f32.ge if (result i32) - local.get $3 + local.get $4 f32.const 1 f32.lt else @@ -44637,14 +44688,14 @@ unreachable end f64.const 0 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44661,14 +44712,14 @@ unreachable end f64.const -0 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44685,14 +44736,14 @@ unreachable end f64.const 1 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44709,14 +44760,14 @@ unreachable end f64.const -1 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44733,14 +44784,14 @@ unreachable end f64.const nan:0x8000000000000 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44757,14 +44808,14 @@ unreachable end f64.const -nan:0x8000000000000 - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44781,14 +44832,14 @@ unreachable end f64.const inf - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44805,14 +44856,14 @@ unreachable end f64.const -inf - local.set $1 - local.get $1 + local.set $2 + local.get $2 i64.reinterpret_f64 i64.const 63 i64.shr_u i32.wrap_i64 - local.get $1 - local.get $1 + local.get $2 + local.get $2 f64.eq i32.and i32.const 0 @@ -44829,13 +44880,13 @@ unreachable end f32.const 0 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44852,13 +44903,13 @@ unreachable end f32.const -0 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44875,13 +44926,13 @@ unreachable end f32.const 1 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44898,13 +44949,13 @@ unreachable end f32.const -1 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44921,13 +44972,13 @@ unreachable end f32.const nan:0x400000 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44944,13 +44995,13 @@ unreachable end f32.const -nan:0x400000 - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44967,13 +45018,13 @@ unreachable end f32.const inf - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -44990,13 +45041,13 @@ unreachable end f32.const -inf - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.reinterpret_f32 i32.const 31 i32.shr_u - local.get $3 - local.get $3 + local.get $4 + local.get $4 f32.eq i32.and i32.const 0 @@ -54964,8 +55015,8 @@ f32.const nan:0x400000 i32.const 1 call $~lib/math/ipow32f - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.ne i32.eqz if @@ -54979,8 +55030,8 @@ f32.const nan:0x400000 i32.const -1 call $~lib/math/ipow32f - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.ne i32.eqz if @@ -54994,8 +55045,8 @@ f32.const nan:0x400000 i32.const 2 call $~lib/math/ipow32f - local.tee $3 - local.get $3 + local.tee $4 + local.get $4 f32.ne i32.eqz if @@ -55191,8 +55242,8 @@ f64.const nan:0x8000000000000 i32.const 1 call $~lib/math/ipow64f - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 f64.ne i32.eqz if @@ -55206,8 +55257,8 @@ f64.const nan:0x8000000000000 i32.const -1 call $~lib/math/ipow64f - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 f64.ne i32.eqz if @@ -55221,8 +55272,8 @@ f64.const nan:0x8000000000000 i32.const 2 call $~lib/math/ipow64f - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 f64.ne i32.eqz if diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 790a9d1ac2..910c94e6d1 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -133,7 +133,7 @@ i64.or end local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $5 i64.gt_s @@ -159,7 +159,7 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end end local.get $2 @@ -372,7 +372,7 @@ i32.shl end local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $5 i32.gt_s @@ -398,7 +398,7 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end end local.get $2 diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat index cdf8f7768f..d335d24ed6 100644 --- a/tests/compiler/std/mod.untouched.wat +++ b/tests/compiler/std/mod.untouched.wat @@ -25,7 +25,8 @@ (local $7 i64) (local $8 f64) (local $9 i64) - (local $10 i64) + (local $10 i32) + (local $11 i64) local.get $0 i64.reinterpret_f64 local.set $2 @@ -167,13 +168,13 @@ i64.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i64.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i64.ge_u @@ -200,9 +201,8 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -226,13 +226,13 @@ i64.const 11 i64.shl i64.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i64.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i64.shl local.set $2 local.get $4 @@ -330,6 +330,7 @@ (local $8 f32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 i32.reinterpret_f32 local.set $2 @@ -467,13 +468,13 @@ i32.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i32.ge_u @@ -500,9 +501,8 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -526,13 +526,13 @@ i32.const 8 i32.shl i32.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i32.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i32.shl local.set $2 local.get $4 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 4f9792186a..d2c4567b86 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -109,6 +109,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index 8d70e1f167..d4dadb8fa6 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -123,7 +123,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $2 @@ -144,20 +144,18 @@ local.tee $1 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $1 - local.tee $3 - i32.const 1 - i32.sub - local.set $1 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $1 + local.tee $3 + i32.const 1 + i32.sub + local.set $1 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -170,18 +168,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index fb523c15c3..3195b6f545 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -112,6 +112,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -143,6 +145,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -161,6 +164,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -177,15 +182,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -202,39 +207,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -245,17 +252,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 7 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 716102bfdb..4c664d7941 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -94,7 +94,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -115,20 +115,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -141,18 +139,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index 283dd94889..de8ef37e73 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -19,10 +19,14 @@ (export "memory" (memory $0)) (start $start) (func $~lib/object/Object.is (; 1 ;) (param $0 f64) (param $1 f64) (result i32) + i32.const 1 + drop local.get $0 local.get $1 f64.eq if + i32.const 1 + drop local.get $0 i64.reinterpret_f64 local.get $1 @@ -40,10 +44,14 @@ return ) (func $~lib/object/Object.is (; 2 ;) (param $0 f32) (param $1 f32) (result i32) + i32.const 1 + drop local.get $0 local.get $1 f32.eq if + i32.const 0 + drop local.get $0 i32.reinterpret_f32 local.get $1 @@ -61,11 +69,15 @@ return ) (func $~lib/object/Object.is (; 3 ;) (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + drop local.get $0 local.get $1 i32.eq ) (func $~lib/object/Object.is (; 4 ;) (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + drop local.get $0 i32.const 0 i32.ne @@ -94,6 +106,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -112,6 +125,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -128,15 +143,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -153,39 +168,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -196,17 +213,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 9 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -289,6 +305,8 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 + i32.const 0 + drop local.get $0 local.get $1 call $~lib/string/String.__eq @@ -300,6 +318,8 @@ local.get $2 ) (func $~lib/object/Object.is (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + i32.const 0 + drop local.get $0 local.get $1 i32.eq @@ -312,6 +332,8 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 + i32.const 0 + drop local.get $0 local.get $1 call $~lib/string/String.__eq diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index c671a12303..ff20519d71 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -189,6 +189,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -403,6 +405,8 @@ (local $42 i32) (local $43 i64) (local $44 i64) + i32.const 1 + drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 9da7d24d7a..441da7a3fe 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -81,7 +81,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -107,10 +107,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 8 i32.ge_u @@ -131,11 +131,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $2 if local.get $0 @@ -156,7 +156,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|2 + br $while-continue|2 end end else @@ -168,7 +168,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $2 i32.add @@ -189,10 +189,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $2 i32.const 8 i32.ge_u @@ -208,11 +208,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $2 if local.get $0 @@ -226,7 +226,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 43e646ae7c..d9b932327a 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -30,6 +30,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -37,6 +38,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -248,13 +251,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -281,9 +284,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -291,39 +293,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -331,13 +335,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -378,9 +382,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -537,13 +540,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -618,9 +621,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -659,13 +661,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -740,9 +742,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -767,13 +768,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -848,9 +849,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -1320,6 +1320,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1333,6 +1334,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1366,13 +1369,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1383,30 +1386,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -1423,37 +1425,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -1464,15 +1464,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1489,17 +1489,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -1512,16 +1511,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -1533,9 +1531,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -1595,6 +1592,8 @@ block $std/pointer/Pointer#get:value|inlined.0 (result i32) global.get $std/pointer/one local.set $0 + i32.const 1 + drop local.get $0 br $std/pointer/Pointer#get:value|inlined.0 end @@ -1603,6 +1602,8 @@ block $std/pointer/Pointer#get:value|inlined.1 (result i32) global.get $std/pointer/one local.set $1 + i32.const 1 + drop local.get $1 br $std/pointer/Pointer#get:value|inlined.1 end @@ -1876,10 +1877,16 @@ block $std/pointer/Pointer#get:value|inlined.6 (result i32) global.get $std/pointer/two local.set $0 + i32.const 1 + drop local.get $0 br $std/pointer/Pointer#get:value|inlined.6 end local.set $6 + i32.const 1 + drop + i32.const 0 + drop local.get $6 i32.const 0 i32.eq @@ -2161,6 +2168,8 @@ local.set $0 f32.const 1.399999976158142 local.set $8 + i32.const 0 + drop local.get $0 local.get $8 f32.store diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index b10c556315..e527d74d29 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -10,14 +10,34 @@ (export "memory" (memory $0)) (start $start) (func $~lib/polyfills/bswap (; 1 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 return ) (func $~lib/polyfills/bswap (; 2 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 return ) (func $~lib/polyfills/bswap (; 3 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -32,6 +52,10 @@ return ) (func $~lib/polyfills/bswap (; 4 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -48,6 +72,12 @@ return ) (func $~lib/polyfills/bswap (; 5 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -62,6 +92,12 @@ return ) (func $~lib/polyfills/bswap (; 6 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -79,6 +115,14 @@ (local $1 i64) (local $2 i64) (local $3 i64) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i64.const 8 i64.shr_u @@ -118,6 +162,14 @@ (local $1 i64) (local $2 i64) (local $3 i64) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i64.const 8 i64.shr_u @@ -154,6 +206,12 @@ return ) (func $~lib/polyfills/bswap (; 9 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -168,6 +226,12 @@ return ) (func $~lib/polyfills/bswap (; 10 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const -16711936 i32.and @@ -182,14 +246,30 @@ return ) (func $~lib/polyfills/bswap16 (; 11 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 return ) (func $~lib/polyfills/bswap16 (; 12 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 return ) (func $~lib/polyfills/bswap16 (; 13 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -204,6 +284,10 @@ return ) (func $~lib/polyfills/bswap16 (; 14 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -220,6 +304,12 @@ return ) (func $~lib/polyfills/bswap16 (; 15 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl @@ -238,6 +328,12 @@ return ) (func $~lib/polyfills/bswap16 (; 16 ;) (param $0 i32) (result i32) + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 8 i32.shl diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index e005bdbd36..138bfa2c89 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -1563,7 +1563,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -1594,7 +1594,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -1663,7 +1663,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1689,10 +1689,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1713,11 +1713,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1738,7 +1738,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1750,7 +1750,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1771,10 +1771,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1790,11 +1790,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1808,7 +1808,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2086,7 +2086,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -2106,15 +2106,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -2169,7 +2167,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -2209,7 +2207,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -2812,6 +2810,10 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s if @@ -2864,6 +2866,10 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s if @@ -2969,6 +2975,10 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s if @@ -3021,6 +3031,10 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s if @@ -3178,7 +3192,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -3218,7 +3232,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -3504,6 +3518,8 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 255 + i32.and i32.const 100 i32.lt_u if @@ -3556,6 +3572,8 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 255 + i32.and i32.const 100 i32.lt_u if @@ -3661,6 +3679,8 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 255 + i32.and i32.const 50 i32.lt_u if @@ -3713,6 +3733,8 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 255 + i32.and i32.const 50 i32.lt_u if @@ -3849,7 +3871,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -3869,15 +3891,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -3932,7 +3952,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -3972,7 +3992,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -4302,6 +4322,10 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s if @@ -4354,6 +4378,10 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s if @@ -4459,6 +4487,10 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s if @@ -4511,6 +4543,10 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s if @@ -4668,7 +4704,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -4708,7 +4744,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -4996,6 +5032,8 @@ local.set $1 loop $for-loop|1 local.get $0 + i32.const 65535 + i32.and i32.const 100 i32.lt_u if @@ -5048,6 +5086,8 @@ local.set $0 loop $for-loop|3 local.get $0 + i32.const 65535 + i32.and i32.const 100 i32.lt_u if @@ -5153,6 +5193,8 @@ local.set $0 loop $for-loop|6 local.get $0 + i32.const 65535 + i32.and i32.const 50 i32.lt_u if @@ -5205,6 +5247,8 @@ local.set $0 loop $for-loop|8 local.get $0 + i32.const 65535 + i32.and i32.const 50 i32.lt_u if @@ -5357,7 +5401,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -5375,15 +5419,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -5434,7 +5476,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -5474,7 +5516,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -6616,7 +6658,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -6634,15 +6676,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -6693,7 +6733,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -6733,7 +6773,7 @@ i32.const 16 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -7775,7 +7815,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -7793,15 +7833,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=4 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=4 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -7853,7 +7891,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -7894,7 +7932,7 @@ i32.const 8 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -8548,7 +8586,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -8566,15 +8604,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -8626,7 +8662,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -8667,7 +8703,7 @@ i32.const 16 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index be2d7c4564..d00bc726de 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -66,6 +66,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -84,6 +86,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -136,6 +140,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -275,6 +281,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -288,6 +296,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -381,6 +391,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -437,6 +449,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -456,6 +470,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -510,6 +526,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -620,6 +638,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -657,6 +677,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -688,6 +710,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -771,6 +795,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -830,50 +856,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -993,6 +1023,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1065,6 +1097,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1169,6 +1203,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1271,6 +1307,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1283,20 +1320,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1305,23 +1344,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1330,11 +1369,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1357,6 +1396,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1374,19 +1415,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1489,6 +1532,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1580,6 +1625,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1603,9 +1650,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1622,6 +1673,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1641,6 +1694,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1653,6 +1708,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1681,6 +1738,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1726,8 +1785,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -1762,6 +1825,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1769,6 +1833,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1980,13 +2046,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -2013,9 +2079,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -2072,39 +2137,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2112,13 +2179,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2159,9 +2226,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2318,13 +2384,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2399,9 +2465,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2440,13 +2505,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2521,9 +2586,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2548,13 +2612,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2629,9 +2693,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3101,6 +3164,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3114,6 +3178,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3147,13 +3213,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3164,30 +3230,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3204,37 +3269,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3245,15 +3308,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3270,17 +3333,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3293,16 +3355,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3314,9 +3375,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3378,6 +3438,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3388,6 +3450,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3436,8 +3500,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3479,6 +3547,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3622,6 +3692,7 @@ ) (func $~lib/set/Set#find (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -3633,11 +3704,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -3666,9 +3737,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -3679,6 +3749,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -3703,6 +3781,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -3737,49 +3816,57 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_s i32.store8 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load8_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -3791,26 +3878,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -3818,19 +3904,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -3851,6 +3937,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -4050,6 +4144,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -4175,6 +4271,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4274,6 +4372,8 @@ end ) (func $~lib/array/Array#__unchecked_set (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -4325,6 +4425,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -4343,14 +4444,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -4358,12 +4461,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load8_s call $~lib/array/Array#__set end @@ -4407,6 +4510,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 52 ;) (param $0 i32) (param $1 i32) (result i32) @@ -4419,6 +4524,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -4435,6 +4548,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -4490,6 +4605,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -4497,8 +4617,14 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -4552,8 +4678,14 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -4607,18 +4739,20 @@ local.set $1 i32.const 0 call $~lib/set/Set#constructor - local.set $2 + local.set $4 i32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -4630,19 +4764,19 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $2 + local.get $4 call $~lib/set/Set#get:size local.get $0 call $~lib/set/Set#get:size @@ -4657,14 +4791,20 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|6 - local.get $3 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -4676,11 +4816,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -4692,10 +4832,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|6 end end @@ -4713,14 +4853,20 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|8 - local.get $3 + local.get $5 + i32.const 24 + i32.shl + i32.const 24 + i32.shr_s i32.const 50 i32.lt_s + local.set $8 + local.get $8 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -4733,10 +4879,10 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#add local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -4748,11 +4894,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -4764,10 +4910,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|8 end end @@ -4801,7 +4947,7 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -4880,6 +5026,7 @@ ) (func $~lib/set/Set#find (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -4891,11 +5038,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -4922,9 +5069,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -4935,6 +5081,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -4957,6 +5111,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -4991,49 +5146,57 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load8_u i32.store8 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load8_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 - i32.load + local.set $13 + local.get $11 + local.get $13 + i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -5045,26 +5208,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -5072,19 +5234,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -5105,6 +5267,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -5218,6 +5388,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -5269,6 +5441,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -5287,14 +5460,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -5302,12 +5477,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load8_u call $~lib/array/Array#__set end @@ -5351,6 +5526,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 68 ;) (param $0 i32) (param $1 i32) (result i32) @@ -5363,6 +5540,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -5377,6 +5562,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -5432,6 +5619,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -5439,8 +5631,12 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 255 + i32.and i32.const 100 i32.lt_u + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -5494,8 +5690,12 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 255 + i32.and i32.const 100 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -5549,18 +5749,20 @@ local.set $1 i32.const 0 call $~lib/set/Set#constructor - local.set $2 + local.set $4 i32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -5572,19 +5774,19 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $2 + local.get $4 call $~lib/set/Set#get:size local.get $0 call $~lib/set/Set#get:size @@ -5599,14 +5801,18 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|6 - local.get $3 + local.get $5 + i32.const 255 + i32.and i32.const 50 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -5618,11 +5824,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -5634,10 +5840,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|6 end end @@ -5655,14 +5861,18 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|8 - local.get $3 + local.get $5 + i32.const 255 + i32.and i32.const 50 i32.lt_u + local.set $8 + local.get $8 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -5675,10 +5885,10 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#add local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -5690,11 +5900,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -5706,10 +5916,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|8 end end @@ -5743,7 +5953,7 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -5844,6 +6054,7 @@ ) (func $~lib/set/Set#find (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -5855,11 +6066,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -5888,9 +6099,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -5901,6 +6111,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -5925,6 +6145,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -5959,49 +6180,59 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_s i32.store16 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load16_s - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -6013,26 +6244,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -6040,19 +6270,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -6073,6 +6303,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -6188,6 +6428,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -6239,6 +6481,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -6257,14 +6500,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -6272,12 +6517,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load16_s call $~lib/array/Array#__set end @@ -6321,6 +6566,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 85 ;) (param $0 i32) (param $1 i32) (result i32) @@ -6333,6 +6580,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -6349,6 +6606,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -6404,6 +6663,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -6411,9 +6675,15 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s - if + local.set $3 + local.get $3 + if local.get $0 local.get $1 call $~lib/set/Set#has @@ -6466,8 +6736,14 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 100 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -6521,18 +6797,20 @@ local.set $1 i32.const 0 call $~lib/set/Set#constructor - local.set $2 + local.set $4 i32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -6544,19 +6822,19 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $2 + local.get $4 call $~lib/set/Set#get:size local.get $0 call $~lib/set/Set#get:size @@ -6571,14 +6849,20 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|6 - local.get $3 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -6590,11 +6874,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -6606,10 +6890,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|6 end end @@ -6627,14 +6911,20 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|8 - local.get $3 + local.get $5 + i32.const 16 + i32.shl + i32.const 16 + i32.shr_s i32.const 50 i32.lt_s + local.set $8 + local.get $8 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -6647,10 +6937,10 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#add local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -6662,11 +6952,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -6678,10 +6968,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|8 end end @@ -6715,7 +7005,7 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -6794,6 +7084,7 @@ ) (func $~lib/set/Set#find (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -6805,11 +7096,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -6836,9 +7127,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -6849,6 +7139,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -6871,6 +7171,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -6905,49 +7206,59 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load16_u i32.store16 block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load16_u - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -6959,26 +7270,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -6986,19 +7296,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -7019,6 +7329,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -7132,6 +7452,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -7183,6 +7505,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -7201,14 +7524,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -7216,12 +7541,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load16_u call $~lib/array/Array#__set end @@ -7265,6 +7590,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 101 ;) (param $0 i32) (param $1 i32) (result i32) @@ -7277,6 +7604,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -7291,6 +7628,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -7346,6 +7685,11 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -7353,8 +7697,12 @@ local.set $1 loop $for-loop|1 local.get $1 + i32.const 65535 + i32.and i32.const 100 i32.lt_u + local.set $3 + local.get $3 if local.get $0 local.get $1 @@ -7408,8 +7756,12 @@ local.set $1 loop $for-loop|3 local.get $1 + i32.const 65535 + i32.and i32.const 100 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -7463,18 +7815,20 @@ local.set $1 i32.const 0 call $~lib/set/Set#constructor - local.set $2 + local.set $4 i32.const 0 - local.set $3 + local.set $5 loop $for-loop|4 - local.get $3 + local.get $5 local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#has i32.eqz @@ -7486,19 +7840,19 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $4 local.get $1 - local.get $3 + local.get $5 call $~lib/array/Array#__get call $~lib/set/Set#add - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|4 end end - local.get $2 + local.get $4 call $~lib/set/Set#get:size local.get $0 call $~lib/set/Set#get:size @@ -7513,14 +7867,18 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|6 - local.get $3 + local.get $5 + i32.const 65535 + i32.and i32.const 50 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -7532,11 +7890,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -7548,10 +7906,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|6 end end @@ -7569,14 +7927,18 @@ unreachable end i32.const 0 - local.set $3 + local.set $5 loop $for-loop|8 - local.get $3 + local.get $5 + i32.const 65535 + i32.and i32.const 50 i32.lt_u + local.set $8 + local.get $8 if local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -7589,10 +7951,10 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#add local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz if @@ -7604,11 +7966,11 @@ unreachable end local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#delete drop local.get $0 - local.get $3 + local.get $5 call $~lib/set/Set#has i32.eqz i32.eqz @@ -7620,10 +7982,10 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $5 i32.const 1 i32.add - local.set $3 + local.set $5 br $for-loop|8 end end @@ -7657,7 +8019,7 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $2 + local.get $4 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release @@ -7778,6 +8140,7 @@ ) (func $~lib/set/Set#find (; 106 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -7789,11 +8152,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -7818,9 +8181,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -7831,6 +8193,18 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -7851,6 +8225,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -7885,49 +8260,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -7939,26 +8326,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -7966,19 +8352,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -7999,6 +8385,18 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -8110,6 +8508,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 112 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -8161,6 +8561,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -8179,14 +8580,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -8194,12 +8597,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load call $~lib/array/Array#__set end @@ -8243,6 +8646,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 118 ;) (param $0 i32) (param $1 i32) (result i32) @@ -8255,6 +8660,18 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -8267,6 +8684,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -8322,6 +8741,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -8331,6 +8751,8 @@ local.get $1 i32.const 100 i32.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -8386,6 +8808,8 @@ local.get $1 i32.const 100 i32.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -8447,6 +8871,8 @@ local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -8494,6 +8920,8 @@ local.get $3 i32.const 50 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -8550,6 +8978,8 @@ local.get $3 i32.const 50 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -8712,6 +9142,7 @@ ) (func $~lib/set/Set#find (; 122 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -8723,11 +9154,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -8752,9 +9183,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -8765,6 +9195,18 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -8785,6 +9227,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -8819,49 +9262,61 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=4 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -8873,26 +9328,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -8900,19 +9354,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/pure/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/pure/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -8933,6 +9387,18 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -9044,6 +9510,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 128 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -9095,6 +9563,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -9113,14 +9582,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -9128,12 +9599,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i32.load call $~lib/array/Array#__set end @@ -9177,6 +9648,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 134 ;) (param $0 i32) (param $1 i32) (result i32) @@ -9189,6 +9662,18 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -9201,6 +9686,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -9256,6 +9743,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -9265,6 +9753,8 @@ local.get $1 i32.const 100 i32.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -9320,6 +9810,8 @@ local.get $1 i32.const 100 i32.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -9381,6 +9873,8 @@ local.get $1 call $~lib/array/Array#get:length i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -9428,6 +9922,8 @@ local.get $3 i32.const 50 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -9484,6 +9980,8 @@ local.get $3 i32.const 50 i32.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -9734,6 +10232,7 @@ ) (func $~lib/set/Set#find (; 139 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -9745,11 +10244,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -9774,9 +10273,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -9787,6 +10285,20 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -9805,9 +10317,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -9842,49 +10355,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=8 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -9896,26 +10423,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -9923,19 +10449,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -9957,6 +10483,20 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -10068,6 +10608,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 145 ;) (param $0 i32) (param $1 i32) (param $2 i64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -10119,6 +10661,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -10137,14 +10680,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -10152,12 +10697,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i64.load call $~lib/array/Array#__set end @@ -10201,6 +10746,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 151 ;) (param $0 i32) (param $1 i64) (result i32) @@ -10214,6 +10761,20 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -10226,6 +10787,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -10282,6 +10845,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -10291,6 +10855,8 @@ local.get $1 i64.const 100 i64.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -10346,6 +10912,8 @@ local.get $1 i64.const 100 i64.lt_s + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -10407,6 +10975,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $2 @@ -10454,6 +11024,8 @@ local.get $1 i64.const 50 i64.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -10510,6 +11082,8 @@ local.get $1 i64.const 50 i64.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -10672,6 +11246,7 @@ ) (func $~lib/set/Set#find (; 155 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -10683,11 +11258,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -10712,9 +11287,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -10725,6 +11299,20 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -10743,9 +11331,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 i64) - (local $12 i32) + (local $11 i32) + (local $12 i64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -10780,49 +11369,63 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i64.load i64.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 i64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=8 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -10834,26 +11437,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -10861,19 +11463,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -10895,6 +11497,20 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -11006,6 +11622,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 161 ;) (param $0 i32) (param $1 i32) (param $2 i64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -11057,6 +11675,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -11075,14 +11694,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -11090,12 +11711,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 i64.load call $~lib/array/Array#__set end @@ -11139,6 +11760,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 167 ;) (param $0 i32) (param $1 i64) (result i32) @@ -11152,6 +11775,20 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -11164,6 +11801,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -11220,6 +11859,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -11229,6 +11869,8 @@ local.get $1 i64.const 100 i64.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -11284,6 +11926,8 @@ local.get $1 i64.const 100 i64.lt_u + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -11345,6 +11989,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $2 @@ -11392,6 +12038,8 @@ local.get $1 i64.const 50 i64.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -11448,6 +12096,8 @@ local.get $1 i64.const 50 i64.lt_u + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -11610,6 +12260,7 @@ ) (func $~lib/set/Set#find (; 171 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -11621,11 +12272,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=4 i32.const 1 @@ -11650,9 +12301,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -11663,6 +12313,14 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -11682,9 +12340,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f32) - (local $12 i32) + (local $11 i32) + (local $12 f32) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -11719,50 +12378,58 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=4 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f32.load f32.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 f32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop + local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=4 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -11774,26 +12441,25 @@ i32.const 8 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -11801,19 +12467,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -11835,6 +12501,14 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -11947,6 +12621,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 177 ;) (param $0 i32) (param $1 i32) (param $2 f32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -11998,6 +12674,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12016,14 +12693,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 8 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=4 i32.const 1 i32.and @@ -12031,12 +12710,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 f32.load call $~lib/array/Array#__set end @@ -12080,6 +12759,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 183 ;) (param $0 i32) (param $1 f32) (result i32) @@ -12093,6 +12774,14 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -12106,6 +12795,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=4 @@ -12162,6 +12853,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -12171,6 +12863,8 @@ local.get $1 f32.const 100 f32.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -12226,6 +12920,8 @@ local.get $1 f32.const 100 f32.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -12287,6 +12983,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $2 @@ -12334,6 +13032,8 @@ local.get $1 f32.const 50 f32.lt + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -12390,6 +13090,8 @@ local.get $1 f32.const 50 f32.lt + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -12552,6 +13254,7 @@ ) (func $~lib/set/Set#find (; 187 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -12563,11 +13266,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -12592,9 +13295,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -12605,6 +13307,16 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -12624,9 +13336,10 @@ (local $8 i32) (local $9 i32) (local $10 i32) - (local $11 f64) - (local $12 i32) + (local $11 i32) + (local $12 f64) (local $13 i32) + (local $14 i32) local.get $1 i32.const 1 i32.add @@ -12661,50 +13374,60 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 f64.load f64.store block $~lib/util/hash/HASH|inlined.2 (result i32) - local.get $9 + local.get $10 f64.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 end local.get $1 i32.and - local.set $12 + local.set $13 local.get $3 - local.get $12 + local.get $13 i32.const 4 i32.mul i32.add - local.set $13 - local.get $10 - local.get $13 + local.set $14 + local.get $11 + local.get $14 i32.load i32.store offset=8 - local.get $13 + local.get $14 local.get $8 i32.store local.get $8 @@ -12716,26 +13439,25 @@ i32.const 16 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $13 + local.tee $14 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/pure/__retain - local.set $10 - local.get $13 + local.set $11 + local.get $14 call $~lib/rt/pure/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -12743,19 +13465,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $12 + local.tee $13 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $12 - local.get $10 + local.set $13 + local.get $11 call $~lib/rt/pure/__release end - local.get $12 + local.get $13 i32.store offset=8 local.get $0 local.get $4 @@ -12777,6 +13499,16 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -12889,6 +13621,8 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 193 ;) (param $0 i32) (param $1 i32) (param $2 f64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -12940,6 +13674,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 i32.load offset=8 local.set $1 @@ -12958,14 +13693,16 @@ local.get $5 local.get $2 i32.lt_s + local.set $6 + local.get $6 if local.get $1 local.get $5 i32.const 16 i32.mul i32.add - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.load offset=8 i32.const 1 i32.and @@ -12973,12 +13710,12 @@ if local.get $3 local.get $4 - local.tee $7 + local.tee $8 i32.const 1 i32.add local.set $4 + local.get $8 local.get $7 - local.get $6 f64.load call $~lib/array/Array#__set end @@ -13022,6 +13759,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/set/Set#delete (; 199 ;) (param $0 i32) (param $1 f64) (result i32) @@ -13035,6 +13774,16 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -13048,6 +13797,8 @@ i32.const 0 return end + i32.const 0 + drop local.get $3 local.get $3 i32.load offset=8 @@ -13104,6 +13855,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) i32.const 0 call $~lib/set/Set#constructor local.set $0 @@ -13113,6 +13865,8 @@ local.get $1 f64.const 100 f64.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -13168,6 +13922,8 @@ local.get $1 f64.const 100 f64.lt + local.set $2 + local.get $2 if local.get $0 local.get $1 @@ -13229,6 +13985,8 @@ local.get $2 call $~lib/array/Array#get:length i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $2 @@ -13276,6 +14034,8 @@ local.get $1 f64.const 50 f64.lt + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -13332,6 +14092,8 @@ local.get $1 f64.const 50 f64.lt + local.set $4 + local.get $4 if local.get $0 local.get $1 @@ -13483,6 +14245,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -13553,6 +14317,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -13574,12 +14340,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 205 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 206 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13590,12 +14359,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 207 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 208 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13606,12 +14378,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 209 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 210 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13622,12 +14397,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 211 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 212 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13638,12 +14416,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 213 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 214 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13654,12 +14435,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 215 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 216 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13670,12 +14454,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 217 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 218 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13686,12 +14473,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 219 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 220 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13702,12 +14492,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 221 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/set/Set#__visit_impl (; 222 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -13718,12 +14511,15 @@ local.get $0 i32.load offset=8 local.set $2 + i32.const 0 + drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 223 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/__visit_members (; 224 ;) (param $0 i32) (param $1 i32) (local $2 i32) diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/std/simd.untouched.wat index 237ebf5846..a381ad0403 100644 --- a/tests/compiler/std/simd.untouched.wat +++ b/tests/compiler/std/simd.untouched.wat @@ -1,6 +1,15 @@ (module + (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) (export "memory" (memory $0)) + (start $start) + (func $start:std/simd (; 0 ;) + i32.const 0 + drop + ) + (func $start (; 1 ;) + call $start:std/simd + ) ) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index f3ceee7040..1017744326 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -159,7 +159,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -185,10 +185,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -209,11 +209,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -234,7 +234,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -246,7 +246,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -267,10 +267,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -286,11 +286,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -304,7 +304,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -596,7 +596,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -627,7 +627,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 3488d7cc68..18058e4195 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -68,6 +68,8 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (param $0 i32) @@ -166,6 +168,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -181,39 +185,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -221,13 +227,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -268,9 +274,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -427,13 +432,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -508,9 +513,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -549,13 +553,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -630,9 +634,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -657,13 +660,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -738,9 +741,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -1210,6 +1212,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1223,6 +1226,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1256,13 +1261,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1273,30 +1278,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -1313,37 +1317,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -1354,15 +1356,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -1379,17 +1381,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -1402,16 +1403,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -1423,9 +1423,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -1464,6 +1463,8 @@ local.get $2 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 1 @@ -1560,6 +1561,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1567,6 +1569,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -1778,13 +1782,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -1811,9 +1815,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -1884,6 +1887,8 @@ end ) (func $~lib/array/Array#__unchecked_set (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -1958,9 +1963,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -2035,9 +2044,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 22 ;) (param $0 i32) (param $1 i32) (param $2 f32) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 @@ -2112,9 +2125,13 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 27 ;) (param $0 i32) (param $1 i32) (param $2 f64) + i32.const 0 + drop local.get $0 i32.load offset=4 local.get $1 diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index b98c92cb51..9f1bb4da20 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -1423,7 +1423,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1449,10 +1449,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1473,11 +1473,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1498,7 +1498,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1510,7 +1510,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1531,10 +1531,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1550,11 +1550,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1568,7 +1568,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -1996,7 +1996,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -2017,20 +2017,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -2043,18 +2041,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -2278,80 +2274,81 @@ local.get $1 select local.set $2 - loop $continue|0 - block $break|0 - local.get $0 - local.get $4 - i32.ge_u - br_if $break|0 - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if - local.get $3 - i32.eqz - i32.const 0 - local.get $1 - select - br_if $break|0 - local.get $2 - i32.const 1 - i32.add - local.set $2 - else - local.get $3 - i32.const 2048 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 i32.lt_u if + local.get $3 + i32.eqz + i32.const 0 + local.get $1 + select + br_if $while-break|0 local.get $2 - i32.const 2 + i32.const 1 i32.add local.set $2 else - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - i32.const 0 local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select + i32.const 2048 + i32.lt_u if + local.get $2 + i32.const 2 + i32.add + local.set $2 + else local.get $0 - i32.load16_u offset=2 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + i32.const 0 + local.get $3 i32.const 64512 i32.and - i32.const 56320 + i32.const 55296 i32.eq + select if local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end + local.get $2 + i32.const 3 + i32.add + local.set $2 end - local.get $2 - i32.const 3 - i32.add - local.set $2 end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $continue|0 end end local.get $2 @@ -2557,164 +2554,165 @@ call $~lib/rt/tlsf/__alloc local.tee $5 local.set $2 - loop $continue|0 - block $break|0 - local.get $0 - local.get $4 - i32.ge_u - br_if $break|0 - local.get $0 - i32.load16_u - local.tee $3 - i32.const 128 - i32.lt_u - if - local.get $3 - i32.eqz - i32.const 0 - local.get $1 - select - br_if $break|0 - local.get $2 - local.get $3 - i32.store8 - local.get $2 - i32.const 1 - i32.add - local.set $2 - else - local.get $3 - i32.const 2048 + loop $while-continue|0 + local.get $0 + local.get $4 + i32.lt_u + if + block $while-break|0 + local.get $0 + i32.load16_u + local.tee $3 + i32.const 128 i32.lt_u if - local.get $2 local.get $3 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or - i32.store8 + i32.eqz + i32.const 0 + local.get $1 + select + br_if $while-break|0 local.get $2 local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 + i32.store8 local.get $2 - i32.const 2 + i32.const 1 i32.add local.set $2 else - local.get $0 - i32.const 2 - i32.add - local.get $4 - i32.lt_u - i32.const 0 local.get $3 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - select + i32.const 2048 + i32.lt_u if + local.get $2 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 + local.get $2 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + else local.get $0 - i32.load16_u offset=2 - local.tee $6 + i32.const 2 + i32.add + local.get $4 + i32.lt_u + i32.const 0 + local.get $3 i32.const 64512 i32.and - i32.const 56320 + i32.const 55296 i32.eq + select if - local.get $2 - local.get $3 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.const 65536 - i32.add - local.get $6 - i32.const 1023 - i32.and - i32.or - local.tee $3 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.store8 - local.get $2 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $2 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $2 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=3 local.get $0 - i32.const 4 - i32.add - local.set $0 - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $continue|0 + i32.load16_u offset=2 + local.tee $6 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + local.get $3 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.const 65536 + i32.add + local.get $6 + i32.const 1023 + i32.and + i32.or + local.tee $3 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $2 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $2 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $while-continue|0 + end end + local.get $2 + local.get $3 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $2 + local.get $3 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $2 + local.get $3 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + i32.const 3 + i32.add + local.set $2 end - local.get $2 - local.get $3 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - i32.store8 - local.get $2 - local.get $3 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $2 - local.get $3 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $2 - i32.const 3 - i32.add - local.set $2 end + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|0 end - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $continue|0 end end local.get $1 @@ -3077,68 +3075,31 @@ call $~lib/rt/tlsf/__alloc local.tee $6 local.set $3 - loop $continue|0 - block $break|0 - local.get $0 - local.get $5 - i32.ge_u - br_if $break|0 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 - local.get $1 - i32.load8_u - local.tee $4 - i32.const 128 - i32.lt_u - if - local.get $4 - i32.eqz - i32.const 0 - local.get $2 - select - br_if $break|0 - local.get $3 - local.get $4 - i32.store16 - local.get $3 - i32.const 2 + loop $while-continue|0 + local.get $0 + local.get $5 + i32.lt_u + if + block $while-break|0 + local.get $0 + local.tee $1 + i32.const 1 i32.add - local.set $3 - else - local.get $4 - i32.const 224 + local.set $0 + local.get $1 + i32.load8_u + local.tee $4 + i32.const 128 i32.lt_u - i32.const 0 - local.get $4 - i32.const 191 - i32.gt_u - select if - local.get $5 - local.get $0 - i32.sub - i32.const 1 - i32.lt_u - br_if $break|0 - local.get $0 - local.tee $1 - i32.const 1 - i32.add - local.set $0 + local.get $4 + i32.eqz + i32.const 0 + local.get $2 + select + br_if $while-break|0 local.get $3 - local.get $1 - i32.load8_u - i32.const 63 - i32.and local.get $4 - i32.const 31 - i32.and - i32.const 6 - i32.shl - i32.or i32.store16 local.get $3 i32.const 2 @@ -3146,105 +3107,143 @@ local.set $3 else local.get $4 - i32.const 365 + i32.const 224 i32.lt_u i32.const 0 local.get $4 - i32.const 239 + i32.const 191 i32.gt_u select - if (result i32) + if local.get $5 local.get $0 i32.sub - i32.const 3 + i32.const 1 i32.lt_u - br_if $break|0 - local.get $3 - local.get $0 - i32.load8_u offset=2 - i32.const 63 - i32.and - local.get $4 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $0 - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or + br_if $while-break|0 local.get $0 - i32.load8_u offset=1 - i32.const 63 - i32.and - i32.const 6 - i32.shl - i32.or - i32.or - i32.const 65536 - i32.sub local.tee $1 - i32.const 10 - i32.shr_u - i32.const 55296 - i32.or - i32.store16 - local.get $3 - local.get $1 - i32.const 1023 - i32.and - i32.const 56320 - i32.or - i32.store16 offset=2 - local.get $3 - i32.const 4 - i32.add - local.set $3 - local.get $0 - i32.const 3 + i32.const 1 i32.add - else - local.get $5 - local.get $0 - i32.sub - i32.const 2 - i32.lt_u - br_if $break|0 + local.set $0 local.get $3 - local.get $0 - i32.load8_u offset=1 + local.get $1 + i32.load8_u i32.const 63 i32.and local.get $4 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $0 - i32.load8_u - i32.const 63 + i32.const 31 i32.and i32.const 6 i32.shl i32.or - i32.or i32.store16 local.get $3 i32.const 2 i32.add local.set $3 - local.get $0 - i32.const 2 - i32.add + else + local.get $4 + i32.const 365 + i32.lt_u + i32.const 0 + local.get $4 + i32.const 239 + i32.gt_u + select + if (result i32) + local.get $5 + local.get $0 + i32.sub + i32.const 3 + i32.lt_u + br_if $while-break|0 + local.get $3 + local.get $0 + i32.load8_u offset=2 + i32.const 63 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $0 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $0 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + i32.or + i32.const 65536 + i32.sub + local.tee $1 + i32.const 10 + i32.shr_u + i32.const 55296 + i32.or + i32.store16 + local.get $3 + local.get $1 + i32.const 1023 + i32.and + i32.const 56320 + i32.or + i32.store16 offset=2 + local.get $3 + i32.const 4 + i32.add + local.set $3 + local.get $0 + i32.const 3 + i32.add + else + local.get $5 + local.get $0 + i32.sub + i32.const 2 + i32.lt_u + br_if $while-break|0 + local.get $3 + local.get $0 + i32.load8_u offset=1 + i32.const 63 + i32.and + local.get $4 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $0 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $0 + i32.const 2 + i32.add + end + local.set $0 end - local.set $0 end + br $while-continue|0 end - br $continue|0 end end local.get $6 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index d6db7552f4..a9d5cd6b17 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -75,8 +75,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -118,6 +122,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -136,6 +142,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -188,6 +196,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -327,6 +337,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -340,6 +352,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -433,6 +447,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -489,6 +505,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -508,6 +526,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -562,6 +582,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -690,6 +712,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -726,6 +750,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -763,6 +789,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -794,6 +822,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -877,6 +907,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -936,50 +968,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1099,6 +1135,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1171,6 +1209,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1348,6 +1388,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1360,20 +1401,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1382,23 +1425,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1407,11 +1450,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1434,6 +1477,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1451,19 +1496,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1566,6 +1613,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1657,6 +1706,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 22 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1680,9 +1731,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1699,6 +1754,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1718,6 +1775,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1730,6 +1789,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1758,6 +1819,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1779,39 +1842,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1819,13 +1884,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1866,9 +1931,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2025,13 +2089,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2106,9 +2170,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2147,13 +2210,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2228,9 +2291,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2255,13 +2317,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2336,9 +2398,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2808,6 +2869,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2821,6 +2883,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2854,13 +2918,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2871,30 +2935,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2911,37 +2974,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2952,15 +3013,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2977,17 +3038,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3000,16 +3060,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3021,9 +3080,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3085,6 +3143,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3095,6 +3155,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3143,8 +3205,12 @@ i32.const 268435455 i32.and local.set $2 - local.get $0 + i32.const 1 + drop + local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3186,6 +3252,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3536,6 +3604,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -3554,6 +3623,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -3570,15 +3641,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -3595,39 +3666,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $10 return end local.get $5 @@ -3638,17 +3711,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 40 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -3902,6 +3974,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -3921,45 +3994,33 @@ i32.const 0 end local.set $4 - block $break|0 - loop $continue|0 + block $while-break|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load16_u local.set $5 local.get $5 - i32.const 128 - i32.lt_u if - local.get $1 - if (result i32) - local.get $5 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $4 - i32.const 1 - i32.add - local.set $4 local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $5 - i32.const 2048 + i32.load16_u + local.set $6 + local.get $6 + i32.const 128 i32.lt_u if + local.get $1 + if (result i32) + local.get $6 + i32.eqz + else + i32.const 0 + end + if + br $while-break|0 + end local.get $4 - i32.const 2 + i32.const 1 i32.add local.set $4 local.get $2 @@ -3967,52 +4028,65 @@ i32.add local.set $2 else - local.get $5 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) + local.get $6 + i32.const 2048 + i32.lt_u + if + local.get $4 + i32.const 2 + i32.add + local.set $4 local.get $2 i32.const 2 i32.add - local.get $3 - i32.lt_u + local.set $2 else - i32.const 0 - end - if - local.get $2 - i32.load16_u offset=2 + local.get $6 i32.const 64512 i32.and - i32.const 56320 + i32.const 55296 i32.eq - if + if (result i32) local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $4 - i32.const 4 + i32.const 2 i32.add - local.set $4 - br $continue|0 + local.get $3 + i32.lt_u + else + i32.const 0 + end + if + local.get $2 + i32.load16_u offset=2 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $4 + i32.const 4 + i32.add + local.set $4 + br $while-continue|0 + end end + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $4 + i32.const 3 + i32.add + local.set $4 end - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $4 - i32.const 3 - i32.add - local.set $4 end + br $while-continue|0 end - br $continue|0 end - unreachable end local.get $4 local.set $5 @@ -4063,6 +4137,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -4188,6 +4264,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4230,6 +4308,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -4250,62 +4329,36 @@ local.set $4 local.get $4 local.set $5 - block $break|0 - loop $continue|0 + block $while-break|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load16_u local.set $6 local.get $6 - i32.const 128 - i32.lt_u if - local.get $1 - if (result i32) - local.get $6 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $5 - local.get $6 - i32.store8 - local.get $5 - i32.const 1 - i32.add - local.set $5 local.get $2 - i32.const 2 - i32.add - local.set $2 - else - local.get $6 - i32.const 2048 + i32.load16_u + local.set $7 + local.get $7 + i32.const 128 i32.lt_u if + local.get $1 + if (result i32) + local.get $7 + i32.eqz + else + i32.const 0 + end + if + br $while-break|0 + end local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 192 - i32.or + local.get $7 i32.store8 local.get $5 - local.get $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $5 - i32.const 2 + i32.const 1 i32.add local.set $5 local.get $2 @@ -4313,121 +4366,148 @@ i32.add local.set $2 else - local.get $6 - i32.const 64512 - i32.and - i32.const 55296 - i32.eq - if (result i32) + local.get $7 + i32.const 2048 + i32.lt_u + if + local.get $5 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 192 + i32.or + i32.store8 + local.get $5 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + i32.const 2 + i32.add + local.set $5 local.get $2 i32.const 2 i32.add - local.get $3 - i32.lt_u + local.set $2 else - i32.const 0 - end - if - local.get $2 - i32.load16_u offset=2 - local.set $7 local.get $7 i32.const 64512 i32.and - i32.const 56320 + i32.const 55296 i32.eq - if - i32.const 65536 - local.get $6 - i32.const 1023 - i32.and - i32.const 10 - i32.shl - i32.add - local.get $7 - i32.const 1023 - i32.and - i32.or - local.set $6 - local.get $5 - local.get $6 - i32.const 18 - i32.shr_u - i32.const 240 - i32.or - i32.store8 - local.get $5 - local.get $6 - i32.const 12 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $5 - local.get $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=3 + if (result i32) local.get $2 - i32.const 4 - i32.add - local.set $2 - local.get $5 - i32.const 4 + i32.const 2 i32.add - local.set $5 - br $continue|0 + local.get $3 + i32.lt_u + else + i32.const 0 end - end - local.get $5 - local.get $6 - i32.const 12 - i32.shr_u - i32.const 224 - i32.or - i32.store8 - local.get $5 - local.get $6 - i32.const 6 - i32.shr_u - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=1 - local.get $5 - local.get $6 - i32.const 63 - i32.and - i32.const 128 - i32.or - i32.store8 offset=2 - local.get $2 - i32.const 2 - i32.add - local.set $2 - local.get $5 - i32.const 3 - i32.add - local.set $5 + if + local.get $2 + i32.load16_u offset=2 + local.set $8 + local.get $8 + i32.const 64512 + i32.and + i32.const 56320 + i32.eq + if + i32.const 65536 + local.get $7 + i32.const 1023 + i32.and + i32.const 10 + i32.shl + i32.add + local.get $8 + i32.const 1023 + i32.and + i32.or + local.set $7 + local.get $5 + local.get $7 + i32.const 18 + i32.shr_u + i32.const 240 + i32.or + i32.store8 + local.get $5 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $5 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=3 + local.get $2 + i32.const 4 + i32.add + local.set $2 + local.get $5 + i32.const 4 + i32.add + local.set $5 + br $while-continue|0 + end + end + local.get $5 + local.get $7 + i32.const 12 + i32.shr_u + i32.const 224 + i32.or + i32.store8 + local.get $5 + local.get $7 + i32.const 6 + i32.shr_u + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=1 + local.get $5 + local.get $7 + i32.const 63 + i32.and + i32.const 128 + i32.or + i32.store8 offset=2 + local.get $2 + i32.const 2 + i32.add + local.set $2 + local.get $5 + i32.const 3 + i32.add + local.set $5 + end end + br $while-continue|0 end - br $continue|0 end - unreachable end local.get $1 if @@ -4805,6 +4885,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 local.set $3 local.get $0 @@ -4831,90 +4912,50 @@ local.set $5 local.get $5 local.set $6 - block $break|0 - loop $continue|0 + block $while-break|0 + loop $while-continue|0 local.get $3 local.get $4 i32.lt_u - i32.eqz - br_if $break|0 - local.get $3 - local.tee $7 - i32.const 1 - i32.add - local.set $3 - local.get $7 - i32.load8_u local.set $7 local.get $7 - i32.const 128 - i32.lt_u if - local.get $2 - if (result i32) - local.get $7 - i32.eqz - else - i32.const 0 - end - if - br $break|0 - end - local.get $6 - local.get $7 - i32.store16 - local.get $6 - i32.const 2 + local.get $3 + local.tee $8 + i32.const 1 i32.add - local.set $6 - else - local.get $7 - i32.const 191 - i32.gt_u - if (result i32) - local.get $7 - i32.const 224 - i32.lt_u - else - i32.const 0 - end + local.set $3 + local.get $8 + i32.load8_u + local.set $8 + local.get $8 + i32.const 128 + i32.lt_u if - local.get $4 - local.get $3 - i32.sub - i32.const 1 - i32.lt_u + local.get $2 + if (result i32) + local.get $8 + i32.eqz + else + i32.const 0 + end if - br $break|0 + br $while-break|0 end local.get $6 - local.get $7 - i32.const 31 - i32.and - i32.const 6 - i32.shl - local.get $3 - local.tee $8 - i32.const 1 - i32.add - local.set $3 local.get $8 - i32.load8_u - i32.const 63 - i32.and - i32.or i32.store16 local.get $6 i32.const 2 i32.add local.set $6 else - local.get $7 - i32.const 239 + local.get $8 + i32.const 191 i32.gt_u if (result i32) - local.get $7 - i32.const 365 + local.get $8 + i32.const 224 i32.lt_u else i32.const 0 @@ -4923,102 +4964,143 @@ local.get $4 local.get $3 i32.sub - i32.const 3 + i32.const 1 i32.lt_u if - br $break|0 + br $while-break|0 end - local.get $7 - i32.const 7 - i32.and - i32.const 18 - i32.shl - local.get $3 - i32.load8_u - i32.const 63 - i32.and - i32.const 12 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 + local.get $6 + local.get $8 + i32.const 31 i32.and i32.const 6 i32.shl - i32.or - local.get $3 - i32.load8_u offset=2 - i32.const 63 - i32.and - i32.or - i32.const 65536 - i32.sub - local.set $7 local.get $3 - i32.const 3 + local.tee $9 + i32.const 1 i32.add local.set $3 - local.get $6 - i32.const 55296 - local.get $7 - i32.const 10 - i32.shr_u - i32.or - i32.store16 - local.get $6 - i32.const 56320 - local.get $7 - i32.const 1023 - i32.and - i32.or - i32.store16 offset=2 - local.get $6 - i32.const 4 - i32.add - local.set $6 - else - local.get $4 - local.get $3 - i32.sub - i32.const 2 - i32.lt_u - if - br $break|0 - end - local.get $6 - local.get $7 - i32.const 15 - i32.and - i32.const 12 - i32.shl - local.get $3 + local.get $9 i32.load8_u i32.const 63 i32.and - i32.const 6 - i32.shl - i32.or - local.get $3 - i32.load8_u offset=1 - i32.const 63 - i32.and i32.or i32.store16 - local.get $3 - i32.const 2 - i32.add - local.set $3 local.get $6 i32.const 2 i32.add local.set $6 + else + local.get $8 + i32.const 239 + i32.gt_u + if (result i32) + local.get $8 + i32.const 365 + i32.lt_u + else + i32.const 0 + end + if + local.get $4 + local.get $3 + i32.sub + i32.const 3 + i32.lt_u + if + br $while-break|0 + end + local.get $8 + i32.const 7 + i32.and + i32.const 18 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 12 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=2 + i32.const 63 + i32.and + i32.or + i32.const 65536 + i32.sub + local.set $8 + local.get $3 + i32.const 3 + i32.add + local.set $3 + local.get $6 + i32.const 55296 + local.get $8 + i32.const 10 + i32.shr_u + i32.or + i32.store16 + local.get $6 + i32.const 56320 + local.get $8 + i32.const 1023 + i32.and + i32.or + i32.store16 offset=2 + local.get $6 + i32.const 4 + i32.add + local.set $6 + else + local.get $4 + local.get $3 + i32.sub + i32.const 2 + i32.lt_u + if + br $while-break|0 + end + local.get $6 + local.get $8 + i32.const 15 + i32.and + i32.const 12 + i32.shl + local.get $3 + i32.load8_u + i32.const 63 + i32.and + i32.const 6 + i32.shl + i32.or + local.get $3 + i32.load8_u offset=1 + i32.const 63 + i32.and + i32.or + i32.store16 + local.get $3 + i32.const 2 + i32.add + local.set $3 + local.get $6 + i32.const 2 + i32.add + local.set $6 + end end end + br $while-continue|0 end - br $continue|0 end - unreachable end local.get $5 local.get $6 @@ -5519,6 +5601,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -5589,6 +5673,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 7cfd2b443e..94de3d22c4 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -1895,7 +1895,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1921,10 +1921,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1945,11 +1945,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1970,7 +1970,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1982,7 +1982,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -2003,10 +2003,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -2022,11 +2022,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -2040,7 +2040,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -2267,7 +2267,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $1 i64.load local.get $2 @@ -2288,20 +2288,18 @@ local.tee $3 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $3 - local.tee $0 - i32.const 1 - i32.sub - local.set $3 - local.get $0 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + local.tee $0 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + if local.get $1 i32.load16_u local.tee $0 @@ -2314,18 +2312,16 @@ local.get $4 i32.sub return - else - local.get $1 - i32.const 2 - i32.add - local.set $1 - local.get $2 - i32.const 2 - i32.add - local.set $2 - br $continue|1 end - unreachable + local.get $1 + i32.const 2 + i32.add + local.set $1 + local.get $2 + i32.const 2 + i32.add + local.set $2 + br $while-continue|1 end end i32.const 0 @@ -2612,7 +2608,7 @@ local.get $3 i32.mul local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $3 i32.lt_u @@ -2627,7 +2623,7 @@ local.get $4 i32.add local.set $4 - br $continue|0 + br $while-continue|0 end end ) @@ -2931,7 +2927,7 @@ i32.const 1 i32.shl local.set $2 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_u @@ -2949,7 +2945,7 @@ i32.const 2 i32.add local.set $1 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -2989,7 +2985,7 @@ i32.shl local.tee $2 local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 if (result i32) local.get $0 @@ -3007,7 +3003,7 @@ i32.const 2 i32.sub local.set $1 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -3044,7 +3040,7 @@ i32.const 1 i32.shl local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 if (result i32) local.get $0 @@ -3062,10 +3058,10 @@ i32.const 2 i32.sub local.set $1 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $2 local.get $1 i32.lt_u @@ -3087,7 +3083,7 @@ i32.const 2 i32.sub local.set $1 - br $continue|1 + br $while-continue|1 end end local.get $1 @@ -3140,7 +3136,7 @@ local.set $1 f64.const 1 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $1 call $~lib/util/string/isSpace if @@ -3154,7 +3150,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -3272,66 +3268,66 @@ i32.const 10 end local.set $4 - loop $continue|2 - block $break|2 + loop $while-continue|2 + block $while-break|2 local.get $2 local.tee $1 i32.const 1 i32.sub local.set $2 local.get $1 - i32.eqz - br_if $break|2 - local.get $0 - i32.load16_u - local.tee $1 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $1 + if + local.get $0 + i32.load16_u + local.tee $1 i32.const 48 i32.sub - else - local.get $1 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u + i32.const 10 + i32.lt_u if (result i32) local.get $1 - i32.const 55 + i32.const 48 i32.sub else local.get $1 - i32.const 97 + i32.const 65 i32.sub i32.const 25 - i32.gt_u - br_if $break|2 - local.get $1 - i32.const 87 - i32.sub + i32.le_u + if (result i32) + local.get $1 + i32.const 55 + i32.sub + else + local.get $1 + i32.const 97 + i32.sub + i32.const 25 + i32.gt_u + br_if $while-break|2 + local.get $1 + i32.const 87 + i32.sub + end end + local.tee $1 + local.get $4 + i32.ge_u + br_if $while-break|2 + local.get $5 + local.get $4 + f64.convert_i32_s + f64.mul + local.get $1 + f64.convert_i32_u + f64.add + local.set $5 + local.get $0 + i32.const 2 + i32.add + local.set $0 + br $while-continue|2 end - local.tee $1 - local.get $4 - i32.ge_u - br_if $break|2 - local.get $5 - local.get $4 - f64.convert_i32_s - f64.mul - local.get $1 - f64.convert_i32_u - f64.add - local.set $5 - local.get $0 - i32.const 2 - i32.add - local.set $0 - br $continue|2 end end local.get $3 @@ -3360,7 +3356,7 @@ local.set $0 i32.const 1 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $0 call $~lib/util/string/isSpace if @@ -3374,7 +3370,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $0 @@ -3492,64 +3488,64 @@ i32.const 10 end local.set $4 - loop $continue|2 - block $break|2 + loop $while-continue|2 + block $while-break|2 local.get $2 local.tee $0 i32.const 1 i32.sub local.set $2 local.get $0 - i32.eqz - br_if $break|2 - local.get $1 - i32.load16_u - local.tee $0 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 i32.const 48 i32.sub - else - local.get $0 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u + i32.const 10 + i32.lt_u if (result i32) local.get $0 - i32.const 55 + i32.const 48 i32.sub else local.get $0 - i32.const 97 + i32.const 65 i32.sub i32.const 25 - i32.gt_u - br_if $break|2 - local.get $0 - i32.const 87 - i32.sub + i32.le_u + if (result i32) + local.get $0 + i32.const 55 + i32.sub + else + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.gt_u + br_if $while-break|2 + local.get $0 + i32.const 87 + i32.sub + end end + local.tee $0 + local.get $4 + i32.ge_u + br_if $while-break|2 + local.get $0 + local.get $4 + local.get $5 + i32.mul + i32.add + local.set $5 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|2 end - local.tee $0 - local.get $4 - i32.ge_u - br_if $break|2 - local.get $0 - local.get $4 - local.get $5 - i32.mul - i32.add - local.set $5 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|2 end end local.get $3 @@ -3578,7 +3574,7 @@ local.set $0 i64.const 1 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $0 call $~lib/util/string/isSpace if @@ -3592,7 +3588,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $0 @@ -3710,66 +3706,66 @@ i32.const 10 end local.set $4 - loop $continue|2 - block $break|2 + loop $while-continue|2 + block $while-break|2 local.get $2 local.tee $0 i32.const 1 i32.sub local.set $2 local.get $0 - i32.eqz - br_if $break|2 - local.get $1 - i32.load16_u - local.tee $0 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u - if (result i32) - local.get $0 + if + local.get $1 + i32.load16_u + local.tee $0 i32.const 48 i32.sub - else - local.get $0 - i32.const 65 - i32.sub - i32.const 25 - i32.le_u + i32.const 10 + i32.lt_u if (result i32) local.get $0 - i32.const 55 + i32.const 48 i32.sub else local.get $0 - i32.const 97 + i32.const 65 i32.sub i32.const 25 - i32.gt_u - br_if $break|2 - local.get $0 - i32.const 87 - i32.sub + i32.le_u + if (result i32) + local.get $0 + i32.const 55 + i32.sub + else + local.get $0 + i32.const 97 + i32.sub + i32.const 25 + i32.gt_u + br_if $while-break|2 + local.get $0 + i32.const 87 + i32.sub + end end + local.tee $0 + local.get $4 + i32.ge_u + br_if $while-break|2 + local.get $0 + i64.extend_i32_u + local.get $5 + local.get $4 + i64.extend_i32_s + i64.mul + i64.add + local.set $5 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|2 end - local.tee $0 - local.get $4 - i32.ge_u - br_if $break|2 - local.get $0 - i64.extend_i32_u - local.get $5 - local.get $4 - i64.extend_i32_s - i64.mul - i64.add - local.set $5 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|2 end end local.get $3 @@ -3783,7 +3779,7 @@ local.set $1 i32.const 1 local.set $2 - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 0 i32.gt_s @@ -3805,7 +3801,7 @@ local.get $1 i32.mul local.set $1 - br $continue|0 + br $while-continue|0 end end local.get $2 @@ -3893,9 +3889,9 @@ (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i64) + (local $6 i32) (local $7 i64) - (local $8 i32) + (local $8 i64) (local $9 f64) (local $10 i64) (local $11 f64) @@ -3909,13 +3905,13 @@ br_if $folding-inner0 local.get $0 i32.load16_u - local.set $5 + local.set $6 f64.const 1 local.set $11 - loop $continue|0 + loop $while-continue|0 local.get $1 if (result i32) - local.get $5 + local.get $6 call $~lib/util/string/isSpace else i32.const 0 @@ -3926,18 +3922,18 @@ i32.add local.tee $0 i32.load16_u - local.set $5 + local.set $6 local.get $1 i32.const 1 i32.sub local.set $1 - br $continue|0 + br $while-continue|0 end end local.get $1 i32.eqz br_if $folding-inner0 - local.get $5 + local.get $6 i32.const 45 i32.eq if (result i32) @@ -3955,7 +3951,7 @@ local.tee $0 i32.load16_u else - local.get $5 + local.get $6 i32.const 43 i32.eq if (result i32) @@ -3971,10 +3967,10 @@ local.tee $0 i32.load16_u else - local.get $5 + local.get $6 end end - local.tee $5 + local.tee $6 i32.const 73 i32.eq i32.const 0 @@ -4003,21 +3999,21 @@ end br $folding-inner0 end - local.get $5 + local.get $6 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 - local.get $5 + local.get $6 i32.const 46 i32.ne select br_if $folding-inner0 local.get $0 - local.set $4 - loop $continue|1 - local.get $5 + local.set $3 + loop $while-continue|1 + local.get $6 i32.const 48 i32.eq if @@ -4026,12 +4022,12 @@ i32.add local.tee $0 i32.load16_u - local.set $5 + local.set $6 local.get $1 i32.const 1 i32.sub local.set $1 - br $continue|1 + br $while-continue|1 end end local.get $1 @@ -4041,15 +4037,15 @@ f64.const 0 return end - local.get $5 + local.get $6 i32.const 46 i32.eq if - local.get $4 + local.get $3 local.get $0 i32.sub i32.eqz - local.set $4 + local.set $3 local.get $0 i32.const 2 i32.add @@ -4061,7 +4057,7 @@ if (result i32) i32.const 0 else - local.get $4 + local.get $3 end br_if $folding-inner0 i32.const 1 @@ -4069,7 +4065,7 @@ loop $for-loop|2 local.get $0 i32.load16_u - local.tee $5 + local.tee $6 i32.const 48 i32.eq if @@ -4077,10 +4073,10 @@ i32.const 1 i32.sub local.set $1 - local.get $8 + local.get $5 i32.const 1 i32.sub - local.set $8 + local.set $5 local.get $0 i32.const 2 i32.add @@ -4095,68 +4091,68 @@ f64.const 0 return end - local.get $8 + local.get $5 if i32.const 0 - local.set $4 + local.set $3 end - local.get $5 + local.get $6 i32.const 48 i32.sub i32.const 10 i32.ge_u i32.const 0 - local.get $4 + local.get $3 select br_if $folding-inner0 end - local.get $5 + local.get $6 i32.const 48 i32.sub - local.set $4 + local.set $3 loop $for-loop|3 i32.const 1 local.get $12 i32.eqz i32.const 0 - local.get $5 + local.get $6 i32.const 46 i32.eq select - local.get $4 + local.get $3 i32.const 10 i32.lt_u select if block $for-break3 - local.get $4 + local.get $3 i32.const 10 i32.lt_u if - local.get $4 + local.get $3 i64.extend_i32_u local.get $2 i64.const 10 i64.mul i64.add local.get $2 - local.get $4 + local.get $3 i32.eqz i32.eqz i64.extend_i32_u i64.or - local.get $3 + local.get $4 i32.const 19 i32.lt_s select local.set $2 - local.get $3 + local.get $4 i32.const 1 i32.add - local.set $3 + local.set $4 else - local.get $3 - local.set $8 + local.get $4 + local.set $5 i32.const 1 local.set $12 end @@ -4171,34 +4167,36 @@ i32.add local.tee $0 i32.load16_u - local.tee $5 + local.tee $6 i32.const 48 i32.sub - local.set $4 + local.set $3 br $for-loop|3 end end end block $~lib/util/string/scientific|inlined.0 i32.const 1 - local.get $8 - local.get $3 + local.get $5 + local.get $4 local.get $12 select i32.const 19 - local.get $3 + local.get $4 i32.const 19 - local.get $3 + local.get $4 i32.lt_s select i32.sub block $~lib/util/string/parseExp|inlined.0 (result i32) + local.get $0 + local.set $5 i32.const 1 - local.set $8 + local.set $4 i32.const 0 - local.set $3 + local.set $0 i32.const 0 - local.get $0 + local.get $5 i32.load16_u i32.const 32 i32.or @@ -4206,12 +4204,12 @@ i32.ne br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $0 + local.get $5 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.load16_u - local.tee $0 + local.tee $5 i32.const 45 i32.eq if (result i32) @@ -4224,14 +4222,14 @@ br_if $~lib/util/string/parseExp|inlined.0 drop i32.const -1 - local.set $8 - local.get $4 + local.set $4 + local.get $3 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.load16_u else - local.get $0 + local.get $5 i32.const 43 i32.eq if (result i32) @@ -4243,18 +4241,18 @@ i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $4 + local.get $3 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.load16_u else - local.get $0 + local.get $5 end end - local.set $0 - loop $continue|4 - local.get $0 + local.set $5 + loop $while-continue|4 + local.get $5 i32.const 48 i32.eq if @@ -4266,58 +4264,58 @@ i32.eqz br_if $~lib/util/string/parseExp|inlined.0 drop - local.get $4 + local.get $3 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.load16_u - local.set $0 - br $continue|4 + local.set $5 + br $while-continue|4 end end - local.get $0 + local.get $5 i32.const 48 i32.sub - local.set $0 + local.set $5 loop $for-loop|5 - local.get $0 + local.get $5 i32.const 10 i32.lt_u i32.const 0 local.get $1 select if - local.get $8 + local.get $4 i32.const 3200 i32.mul - local.get $3 + local.get $0 i32.const 3200 i32.ge_s br_if $~lib/util/string/parseExp|inlined.0 drop + local.get $5 local.get $0 - local.get $3 i32.const 10 i32.mul i32.add - local.set $3 + local.set $0 local.get $1 i32.const 1 i32.sub local.set $1 - local.get $4 + local.get $3 i32.const 2 i32.add - local.tee $4 + local.tee $3 i32.load16_u i32.const 48 i32.sub - local.set $0 + local.set $5 br $for-loop|5 end end - local.get $3 - local.get $8 + local.get $0 + local.get $4 i32.mul end i32.add @@ -4373,9 +4371,9 @@ local.get $0 i32.const 31 i32.shr_s - local.tee $3 + local.tee $4 local.get $0 - local.get $3 + local.get $4 i32.add i32.xor i32.const 22 @@ -4419,17 +4417,17 @@ local.get $2 local.get $2 i64.clz - local.tee $6 + local.tee $7 i64.shl local.set $2 local.get $0 - local.tee $3 + local.tee $4 i64.extend_i32_s - local.get $6 + local.get $7 i64.sub - local.set $6 + local.set $7 loop $for-loop|6 - local.get $3 + local.get $4 i32.const -14 i32.le_s if @@ -4442,7 +4440,7 @@ i64.div_u local.tee $10 i64.clz - local.tee $7 + local.tee $8 i64.const 18 i64.sub i64.shl @@ -4451,24 +4449,24 @@ f64.nearest i64.trunc_f64_u local.get $10 - local.get $7 + local.get $8 i64.shl i64.add local.set $2 - local.get $6 local.get $7 + local.get $8 i64.sub - local.set $6 - local.get $3 + local.set $7 + local.get $4 i32.const 14 i32.add - local.set $3 + local.set $4 br $for-loop|6 end end local.get $2 i32.const 0 - local.get $3 + local.get $4 i32.sub call $~lib/math/ipow32 i64.extend_i32_s @@ -4476,13 +4474,13 @@ i64.div_u local.tee $13 i64.clz - local.set $7 + local.set $8 local.get $2 local.get $10 i64.rem_u f64.convert_i64_u i64.reinterpret_f64 - local.get $7 + local.get $8 i64.const 52 i64.shl i64.add @@ -4492,12 +4490,12 @@ f64.div i64.trunc_f64_u local.get $13 - local.get $7 + local.get $8 i64.shl i64.add f64.convert_i64_u - local.get $6 local.get $7 + local.get $8 i64.sub i32.wrap_i64 call $~lib/math/NativeMath.scalbn @@ -4505,10 +4503,10 @@ local.get $2 local.get $2 i64.ctz - local.tee $6 + local.tee $7 i64.shr_u local.set $2 - local.get $6 + local.get $7 local.get $0 i64.extend_i32_s i64.add @@ -4533,34 +4531,34 @@ i64.const 32 i64.shr_u i64.add - local.tee $6 + local.tee $7 i64.const 32 i64.shr_u i32.wrap_i64 i32.clz - local.tee $3 + local.tee $4 i64.extend_i32_u i64.sub - local.tee $7 + local.tee $8 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift local.get $2 - local.get $3 + local.get $4 i64.extend_i32_u i64.shl i64.const 31 i64.shr_u i64.const 1 i64.and - local.get $6 - local.get $3 + local.get $7 + local.get $4 i64.extend_i32_u i64.shl local.get $2 i64.const 4294967295 i64.and - local.get $7 + local.get $8 i64.shr_u i64.or i64.add @@ -4580,7 +4578,7 @@ i64.const 4294967295 i64.and i64.mul - local.set $6 + local.set $7 i64.const 32 local.get $0 i64.extend_i32_u @@ -4588,7 +4586,7 @@ i64.const 32 i64.shr_u i64.mul - local.get $6 + local.get $7 i64.const 32 i64.shr_u i64.add @@ -4600,11 +4598,11 @@ local.tee $0 i64.extend_i32_u i64.sub - local.tee $7 + local.tee $8 global.get $~lib/util/string/__fixmulShift i64.add global.set $~lib/util/string/__fixmulShift - local.get $6 + local.get $7 local.get $0 i64.extend_i32_u i64.shl @@ -4616,10 +4614,10 @@ local.get $0 i64.extend_i32_u i64.shl - local.get $6 + local.get $7 i64.const 4294967295 i64.and - local.get $7 + local.get $8 i64.shr_u i64.or i64.add @@ -5257,7 +5255,7 @@ local.get $0 local.get $4 call $~lib/memory/memory.copy - loop $continue|1 + loop $while-continue|1 local.get $0 local.get $6 local.get $5 @@ -5280,7 +5278,7 @@ local.get $9 i32.add local.set $5 - br $continue|1 + br $while-continue|1 end end local.get $1 @@ -5289,7 +5287,7 @@ end local.get $4 local.set $1 - loop $continue|2 + loop $while-continue|2 local.get $0 local.get $6 local.get $5 @@ -5360,7 +5358,7 @@ local.get $10 i32.add local.set $5 - br $continue|2 + br $while-continue|2 end end local.get $7 @@ -5833,7 +5831,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -5864,7 +5862,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -6060,7 +6058,7 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.set $3 - loop $continue|1 + loop $while-continue|1 local.get $0 local.get $1 local.get $4 @@ -6107,14 +6105,12 @@ if local.get $3 return - else - local.get $7 - local.get $8 - i32.add - local.set $4 - br $continue|1 end - unreachable + local.get $7 + local.get $8 + i32.add + local.set $4 + br $while-continue|1 end end local.get $4 @@ -6247,7 +6243,7 @@ ) (func $~lib/util/number/utoa_simple (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -6266,7 +6262,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 80 ;) (param $0 i32) (result i32) @@ -6389,7 +6385,7 @@ ) (func $~lib/util/number/utoa_simple (; 83 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) - loop $continue|0 + loop $do-continue|0 local.get $1 i64.const 10 i64.div_u @@ -6411,7 +6407,7 @@ local.tee $1 i64.const 0 i64.ne - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/utoa64 (; 84 ;) (param $0 i64) (result i32) @@ -6559,7 +6555,7 @@ i32.const 15492 i32.load local.set $13 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -6717,81 +6713,83 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $13 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $13 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return + br $while-continue|0 end end - loop $continue|3 (result i32) + loop $while-continue|4 (result i32) local.get $5 i64.const 10 i64.mul @@ -6838,7 +6836,7 @@ local.tee $12 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 local.get $4 global.get $~lib/util/number/_K i32.add @@ -6866,7 +6864,7 @@ local.tee $2 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -6904,7 +6902,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $2 @@ -7065,34 +7063,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -7578,7 +7576,7 @@ i32.const 22836 i32.load local.set $6 - loop $continue|0 + loop $while-continue|0 local.get $2 if local.get $6 @@ -7645,7 +7643,7 @@ end end local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $0 @@ -7805,7 +7803,7 @@ local.set $1 i32.const 0 local.set $8 - loop $continue|1 + loop $while-continue|1 local.get $8 local.get $1 i32.le_s @@ -7841,12 +7839,11 @@ i32.sub local.set $1 end - br $continue|1 else local.get $4 br $~lib/util/casemap/bsearch|inlined.0 end - unreachable + br $while-continue|1 end end i32.const -1 @@ -16803,7 +16800,7 @@ i32.shl i32.add local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $0 i32.lt_u @@ -16820,7 +16817,7 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 99c440ff40..3ff6dc94d5 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -551,8 +551,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -594,6 +598,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -612,6 +618,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -664,6 +672,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -803,6 +813,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -816,6 +828,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -909,6 +923,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -965,6 +981,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -984,6 +1002,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -1038,6 +1058,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -1166,6 +1188,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1202,6 +1226,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -1239,6 +1265,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -1270,6 +1298,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -1353,6 +1383,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -1412,50 +1444,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1575,6 +1611,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1647,6 +1685,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1824,6 +1864,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1836,20 +1877,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1858,23 +1901,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1883,11 +1926,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1910,6 +1953,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1927,19 +1972,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -2042,6 +2089,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -2133,6 +2182,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -2156,9 +2207,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -2175,6 +2230,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -2194,6 +2251,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -2206,6 +2265,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -2234,6 +2295,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -2255,39 +2318,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2295,13 +2360,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2342,9 +2407,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2501,13 +2565,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2582,9 +2646,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2623,13 +2686,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2704,9 +2767,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2731,13 +2793,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2812,9 +2874,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3284,6 +3345,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3297,6 +3359,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3330,13 +3394,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3347,30 +3411,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3387,37 +3450,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3428,15 +3489,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3453,17 +3514,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3476,16 +3536,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3497,9 +3556,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3561,6 +3619,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3571,6 +3631,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3619,8 +3681,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3662,6 +3728,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -3738,6 +3806,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -3756,6 +3825,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -3772,15 +3843,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -3797,39 +3868,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $10 return end local.get $5 @@ -3840,17 +3913,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 36 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -4265,6 +4337,8 @@ local.get $7 local.get $5 i32.le_s + local.set $4 + local.get $4 if local.get $0 local.get $7 @@ -4275,10 +4349,10 @@ i32.eqz if local.get $7 - local.set $4 + local.set $6 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $6 return end local.get $7 @@ -4313,19 +4387,20 @@ (func $~lib/memory/memory.repeat (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 0 local.set $4 local.get $2 local.get $3 i32.mul local.set $5 - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $6 + local.get $6 + if local.get $0 local.get $4 i32.add @@ -4336,9 +4411,8 @@ local.get $2 i32.add local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/string/String#padStart (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4603,6 +4677,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $4 + local.get $4 if local.get $0 local.get $7 @@ -4613,10 +4689,10 @@ i32.eqz if local.get $7 - local.set $4 + local.set $6 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $6 return end local.get $7 @@ -4725,6 +4801,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/string/String#get:length i32.const 1 @@ -4732,29 +4809,28 @@ local.set $1 i32.const 0 local.set $2 - block $break|0 - loop $continue|0 + loop $while-continue|0 + local.get $2 + local.get $1 + i32.lt_u + if (result i32) + local.get $0 local.get $2 - local.get $1 - i32.lt_u - if (result i32) - local.get $0 - local.get $2 - i32.add - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - i32.eqz - br_if $break|0 + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if local.get $2 i32.const 2 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 i32.eqz @@ -4777,20 +4853,21 @@ local.get $1 i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 + local.set $4 + local.get $4 local.get $0 local.get $2 i32.add local.get $1 call $~lib/memory/memory.copy - local.get $3 + local.get $4 call $~lib/rt/pure/__retain ) (func $~lib/string/String#trimEnd (; 52 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/string/String#get:length i32.const 1 @@ -4798,29 +4875,28 @@ local.set $1 local.get $1 local.set $2 - block $break|0 - loop $continue|0 + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $0 local.get $2 - if (result i32) - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - i32.eqz - br_if $break|0 + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if local.get $2 i32.const 2 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 i32.eqz @@ -4840,12 +4916,12 @@ local.get $2 i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $3 - local.get $3 + local.set $4 + local.get $4 local.get $0 local.get $2 call $~lib/memory/memory.copy - local.get $3 + local.get $4 call $~lib/rt/pure/__retain ) (func $~lib/string/String#trim (; 53 ;) (param $0 i32) (result i32) @@ -4853,6 +4929,7 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/string/String#get:length local.set $1 @@ -4860,59 +4937,57 @@ i32.const 1 i32.shl local.set $2 - block $break|0 - loop $continue|0 + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $0 local.get $2 - if (result i32) - local.get $0 - local.get $2 - i32.add - i32.const 2 - i32.sub - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - i32.eqz - br_if $break|0 + i32.add + i32.const 2 + i32.sub + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if local.get $2 i32.const 2 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 - local.set $3 - block $break|1 - loop $continue|1 - local.get $3 - local.get $2 - i32.lt_u - if (result i32) - local.get $0 - local.get $3 - i32.add - i32.load16_u - call $~lib/util/string/isSpace - else - i32.const 0 - end - i32.eqz - br_if $break|1 - local.get $3 + local.set $4 + loop $while-continue|1 + local.get $4 + local.get $2 + i32.lt_u + if (result i32) + local.get $0 + local.get $4 + i32.add + i32.load16_u + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $3 + local.get $3 + if + local.get $4 i32.const 2 i32.add - local.set $3 + local.set $4 local.get $2 i32.const 2 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.eqz @@ -4921,7 +4996,7 @@ call $~lib/rt/pure/__retain return end - local.get $3 + local.get $4 i32.eqz if (result i32) local.get $2 @@ -4940,14 +5015,14 @@ local.get $2 i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $5 + local.get $5 local.get $0 - local.get $3 + local.get $4 i32.add local.get $2 call $~lib/memory/memory.copy - local.get $4 + local.get $5 call $~lib/rt/pure/__retain ) (func $~lib/util/string/strtol (; 54 ;) (param $0 i32) (param $1 i32) (result f64) @@ -4967,6 +5042,8 @@ local.get $2 i32.eqz if + i32.const 1 + drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -4981,12 +5058,12 @@ local.set $5 f64.const 1 local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + call $~lib/util/string/isSpace + local.set $7 + local.get $7 + if local.get $4 i32.const 2 i32.add @@ -4997,9 +5074,8 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $5 i32.const 45 @@ -5011,6 +5087,8 @@ local.tee $2 i32.eqz if + i32.const 1 + drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5037,6 +5115,8 @@ local.tee $2 i32.eqz if + i32.const 1 + drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5147,6 +5227,8 @@ i32.gt_s end if + i32.const 1 + drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5157,81 +5239,82 @@ end f64.const 0 local.set $8 - block $break|2 - loop $continue|2 + block $while-break|2 + loop $while-continue|2 local.get $2 local.tee $7 i32.const 1 i32.sub local.set $2 local.get $7 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u + local.set $7 + local.get $7 if - local.get $5 - i32.const 48 - i32.sub + local.get $4 + i32.load16_u local.set $5 - else local.get $5 - i32.const 65 + i32.const 48 i32.sub - i32.const 25 - i32.le_u - if + i32.const 10 + i32.lt_u + if local.get $5 - i32.const 65 - i32.const 10 - i32.sub + i32.const 48 i32.sub local.set $5 else local.get $5 - i32.const 97 + i32.const 65 i32.sub i32.const 25 i32.le_u if local.get $5 - i32.const 97 + i32.const 65 i32.const 10 i32.sub i32.sub local.set $5 else - br $break|2 + local.get $5 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $while-break|2 + end end end + local.get $5 + local.get $1 + i32.ge_u + if + br $while-break|2 + end + local.get $8 + local.get $1 + f64.convert_i32_s + f64.mul + local.get $5 + f64.convert_i32_u + f64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $while-continue|2 end - local.get $5 - local.get $1 - i32.ge_u - if - br $break|2 - end - local.get $8 - local.get $1 - f64.convert_i32_s - f64.mul - local.get $5 - f64.convert_i32_u - f64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 end - unreachable end local.get $6 local.get $8 @@ -5270,6 +5353,8 @@ local.get $2 i32.eqz if + i32.const 0 + drop i32.const 0 local.set $3 local.get $0 @@ -5284,12 +5369,12 @@ local.set $5 i32.const 1 local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + call $~lib/util/string/isSpace + local.set $3 + local.get $3 + if local.get $4 i32.const 2 i32.add @@ -5300,9 +5385,8 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $5 i32.const 45 @@ -5314,6 +5398,8 @@ local.tee $2 i32.eqz if + i32.const 0 + drop i32.const 0 local.set $3 local.get $0 @@ -5340,6 +5426,8 @@ local.tee $2 i32.eqz if + i32.const 0 + drop i32.const 0 local.set $3 local.get $0 @@ -5450,6 +5538,8 @@ i32.gt_s end if + i32.const 0 + drop i32.const 0 local.set $3 local.get $0 @@ -5460,79 +5550,80 @@ end i32.const 0 local.set $7 - block $break|2 - loop $continue|2 + block $while-break|2 + loop $while-continue|2 local.get $2 local.tee $3 i32.const 1 i32.sub local.set $2 local.get $3 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u + local.set $3 + local.get $3 if - local.get $5 - i32.const 48 - i32.sub + local.get $4 + i32.load16_u local.set $5 - else local.get $5 - i32.const 65 + i32.const 48 i32.sub - i32.const 25 - i32.le_u + i32.const 10 + i32.lt_u if local.get $5 - i32.const 65 - i32.const 10 - i32.sub + i32.const 48 i32.sub local.set $5 else local.get $5 - i32.const 97 + i32.const 65 i32.sub i32.const 25 i32.le_u if local.get $5 - i32.const 97 + i32.const 65 i32.const 10 i32.sub i32.sub local.set $5 else - br $break|2 + local.get $5 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $while-break|2 + end end end + local.get $5 + local.get $1 + i32.ge_u + if + br $while-break|2 + end + local.get $7 + local.get $1 + i32.mul + local.get $5 + i32.add + local.set $7 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $while-continue|2 end - local.get $5 - local.get $1 - i32.ge_u - if - br $break|2 - end - local.get $7 - local.get $1 - i32.mul - local.get $5 - i32.add - local.set $7 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 end - unreachable end local.get $6 local.get $7 @@ -5572,6 +5663,8 @@ local.get $2 i32.eqz if + i32.const 0 + drop i64.const 0 local.set $3 local.get $0 @@ -5586,12 +5679,12 @@ local.set $5 i64.const 1 local.set $6 - block $break|0 - loop $continue|0 - local.get $5 - call $~lib/util/string/isSpace - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + call $~lib/util/string/isSpace + local.set $7 + local.get $7 + if local.get $4 i32.const 2 i32.add @@ -5602,9 +5695,8 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $5 i32.const 45 @@ -5616,6 +5708,8 @@ local.tee $2 i32.eqz if + i32.const 0 + drop i64.const 0 local.set $3 local.get $0 @@ -5642,6 +5736,8 @@ local.tee $2 i32.eqz if + i32.const 0 + drop i64.const 0 local.set $3 local.get $0 @@ -5752,6 +5848,8 @@ i32.gt_s end if + i32.const 0 + drop i64.const 0 local.set $3 local.get $0 @@ -5762,81 +5860,82 @@ end i64.const 0 local.set $8 - block $break|2 - loop $continue|2 + block $while-break|2 + loop $while-continue|2 local.get $2 local.tee $7 i32.const 1 i32.sub local.set $2 local.get $7 - i32.eqz - br_if $break|2 - local.get $4 - i32.load16_u - local.set $5 - local.get $5 - i32.const 48 - i32.sub - i32.const 10 - i32.lt_u + local.set $7 + local.get $7 if - local.get $5 - i32.const 48 - i32.sub + local.get $4 + i32.load16_u local.set $5 - else local.get $5 - i32.const 65 + i32.const 48 i32.sub - i32.const 25 - i32.le_u + i32.const 10 + i32.lt_u if local.get $5 - i32.const 65 - i32.const 10 - i32.sub + i32.const 48 i32.sub local.set $5 else local.get $5 - i32.const 97 + i32.const 65 i32.sub i32.const 25 i32.le_u if local.get $5 - i32.const 97 + i32.const 65 i32.const 10 i32.sub i32.sub local.set $5 else - br $break|2 + local.get $5 + i32.const 97 + i32.sub + i32.const 25 + i32.le_u + if + local.get $5 + i32.const 97 + i32.const 10 + i32.sub + i32.sub + local.set $5 + else + br $while-break|2 + end end end + local.get $5 + local.get $1 + i32.ge_u + if + br $while-break|2 + end + local.get $8 + local.get $1 + i64.extend_i32_s + i64.mul + local.get $5 + i64.extend_i32_u + i64.add + local.set $8 + local.get $4 + i32.const 2 + i32.add + local.set $4 + br $while-continue|2 end - local.get $5 - local.get $1 - i32.ge_u - if - br $break|2 - end - local.get $8 - local.get $1 - i64.extend_i32_s - i64.mul - local.get $5 - i64.extend_i32_u - i64.add - local.set $8 - local.get $4 - i32.const 2 - i32.add - local.set $4 - br $continue|2 end - unreachable end local.get $6 local.get $8 @@ -5865,6 +5964,8 @@ (local $4 i32) i32.const 1 local.set $2 + i32.const 1 + drop local.get $1 i32.const 0 i32.lt_s @@ -6027,13 +6128,13 @@ local.get $2 return end - block $break|2 - loop $continue|2 - local.get $1 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $1 + i32.const 0 + i32.gt_s + local.set $3 + local.get $3 + if local.get $1 i32.const 1 i32.and @@ -6051,9 +6152,8 @@ local.get $0 i32.mul local.set $0 - br $continue|2 + br $while-continue|2 end - unreachable end local.get $2 ) @@ -6158,20 +6258,21 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i32) (local $13 i32) (local $14 i32) (local $15 i32) (local $16 i32) - (local $17 i64) + (local $17 i32) (local $18 i64) (local $19 i64) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) + (local $24 i64) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -6195,17 +6296,17 @@ local.set $4 f64.const 1 local.set $5 - block $break|0 - loop $continue|0 - local.get $1 - if (result i32) - local.get $4 - call $~lib/util/string/isSpace - else - i32.const 0 - end - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + if (result i32) + local.get $4 + call $~lib/util/string/isSpace + else + i32.const 0 + end + local.set $6 + local.get $6 + if local.get $3 i32.const 2 i32.add @@ -6216,9 +6317,8 @@ i32.const 1 i32.sub local.set $1 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.eqz @@ -6342,14 +6442,14 @@ return end local.get $3 - local.set $6 - block $break|1 - loop $continue|1 - local.get $4 - i32.const 48 - i32.eq - i32.eqz - br_if $break|1 + local.set $7 + loop $while-continue|1 + local.get $4 + i32.const 48 + i32.eq + local.set $6 + local.get $6 + if local.get $3 i32.const 2 i32.add @@ -6360,9 +6460,8 @@ i32.const 1 i32.sub local.set $1 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $1 i32.const 0 @@ -6376,22 +6475,22 @@ return end i32.const 0 - local.set $7 - i32.const 0 local.set $8 i32.const 0 local.set $9 - i64.const 0 + i32.const 0 local.set $10 + i64.const 0 + local.set $11 local.get $4 i32.const 46 i32.eq if - local.get $6 + local.get $7 local.get $3 i32.sub i32.eqz - local.set $11 + local.set $6 local.get $3 i32.const 2 i32.add @@ -6403,7 +6502,7 @@ local.get $1 i32.eqz if (result i32) - local.get $11 + local.get $6 else i32.const 0 end @@ -6416,22 +6515,24 @@ return end i32.const 1 - local.set $7 + local.set $8 loop $for-loop|2 local.get $3 i32.load16_u local.tee $4 i32.const 48 i32.eq + local.set $12 + local.get $12 if local.get $1 i32.const 1 i32.sub local.set $1 - local.get $9 + local.get $10 i32.const 1 i32.sub - local.set $9 + local.set $10 local.get $3 i32.const 2 i32.add @@ -6450,10 +6551,10 @@ local.get $2 return end - local.get $9 + local.get $10 i32.eqz if (result i32) - local.get $11 + local.get $6 else i32.const 0 end @@ -6478,10 +6579,10 @@ local.get $4 i32.const 48 i32.sub - local.set $11 + local.set $6 block $for-break3 loop $for-loop|3 - local.get $11 + local.get $6 i32.const 10 i32.lt_u if (result i32) @@ -6491,45 +6592,47 @@ i32.const 46 i32.eq if (result i32) - local.get $7 + local.get $8 i32.eqz else i32.const 0 end end + local.set $12 + local.get $12 if - local.get $11 + local.get $6 i32.const 10 i32.lt_u if - local.get $8 + local.get $9 i32.const 19 i32.lt_s if (result i64) i64.const 10 - local.get $10 - i64.mul local.get $11 + i64.mul + local.get $6 i64.extend_i32_u i64.add else - local.get $10 local.get $11 + local.get $6 i32.eqz i32.eqz i64.extend_i32_u i64.or end - local.set $10 - local.get $8 + local.set $11 + local.get $9 i32.const 1 i32.add - local.set $8 - else - local.get $8 local.set $9 + else + local.get $9 + local.set $10 i32.const 1 - local.set $7 + local.set $8 end local.get $1 i32.const 1 @@ -6548,40 +6651,40 @@ local.get $4 i32.const 48 i32.sub - local.set $11 + local.set $6 br $for-loop|3 end end end - local.get $7 + local.get $8 i32.eqz if - local.get $8 - local.set $9 + local.get $9 + local.set $10 end block $~lib/util/string/scientific|inlined.0 (result f64) + local.get $11 + local.set $18 local.get $10 - local.set $17 - local.get $9 i32.const 19 - local.tee $11 - local.get $8 + local.tee $6 + local.get $9 local.tee $12 - local.get $11 + local.get $6 local.get $12 i32.lt_s select i32.sub block $~lib/util/string/parseExp|inlined.0 (result i32) local.get $3 - local.set $11 + local.set $6 local.get $1 local.set $12 i32.const 1 local.set $13 i32.const 0 local.set $14 - local.get $11 + local.get $6 i32.load16_u local.set $15 local.get $15 @@ -6593,10 +6696,10 @@ i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $11 + local.get $6 i32.const 2 i32.add - local.tee $11 + local.tee $6 i32.load16_u local.set $15 local.get $15 @@ -6612,10 +6715,10 @@ i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $11 + local.get $6 i32.const 2 i32.add - local.tee $11 + local.tee $6 i32.load16_u local.set $15 i32.const -1 @@ -6634,21 +6737,21 @@ i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $11 + local.get $6 i32.const 2 i32.add - local.tee $11 + local.tee $6 i32.load16_u local.set $15 end end - block $break|4 - loop $continue|4 - local.get $15 - i32.const 48 - i32.eq - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $15 + i32.const 48 + i32.eq + local.set $16 + local.get $16 + if local.get $12 i32.const 1 i32.sub @@ -6658,15 +6761,14 @@ i32.const 0 br $~lib/util/string/parseExp|inlined.0 end - local.get $11 + local.get $6 i32.const 2 i32.add - local.tee $11 + local.tee $6 i32.load16_u local.set $15 - br $continue|4 + br $while-continue|4 end - unreachable end local.get $15 i32.const 48 @@ -6681,6 +6783,8 @@ else i32.const 0 end + local.set $17 + local.get $17 if local.get $14 i32.const 3200 @@ -6697,10 +6801,10 @@ local.get $16 i32.add local.set $14 - local.get $11 + local.get $6 i32.const 2 i32.add - local.tee $11 + local.tee $6 i32.load16_u local.set $15 local.get $12 @@ -6719,15 +6823,15 @@ i32.mul end i32.add - local.set $16 - local.get $17 + local.set $17 + local.get $18 i64.const 0 i64.ne i32.eqz if (result i32) i32.const 1 else - local.get $16 + local.get $17 i32.const -342 i32.lt_s end @@ -6735,27 +6839,27 @@ f64.const 0 br $~lib/util/string/scientific|inlined.0 end - local.get $16 + local.get $17 i32.const 308 i32.gt_s if f64.const inf br $~lib/util/string/scientific|inlined.0 end - local.get $17 + local.get $18 f64.convert_i64_u local.set $2 - local.get $16 + local.get $17 i32.eqz if local.get $2 br $~lib/util/string/scientific|inlined.0 end - local.get $16 + local.get $17 i32.const 22 i32.gt_s if (result i32) - local.get $16 + local.get $17 i32.const 37 i32.le_s else @@ -6763,13 +6867,13 @@ end if local.get $2 - local.get $16 + local.get $17 i32.const 22 i32.sub - local.set $12 + local.set $16 global.get $~lib/util/string/Powers10 i32.load offset=4 - local.get $12 + local.get $16 i32.const 3 i32.shl i32.add @@ -6777,18 +6881,18 @@ f64.mul local.set $2 i32.const 22 - local.set $16 + local.set $17 end - local.get $17 + local.get $18 i64.const 9007199254740991 i64.le_u if (result i32) - local.get $16 - local.tee $12 + local.get $17 + local.tee $16 i32.const 31 i32.shr_s local.tee $15 - local.get $12 + local.get $16 i32.add local.get $15 i32.xor @@ -6798,16 +6902,16 @@ i32.const 0 end if - local.get $16 + local.get $17 i32.const 0 i32.gt_s if local.get $2 - local.get $16 - local.set $11 + local.get $17 + local.set $12 global.get $~lib/util/string/Powers10 i32.load offset=4 - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add @@ -6817,12 +6921,12 @@ end local.get $2 i32.const 0 - local.get $16 + local.get $17 i32.sub - local.set $13 + local.set $6 global.get $~lib/util/string/Powers10 i32.load offset=4 - local.get $13 + local.get $6 i32.const 3 i32.shl i32.add @@ -6830,48 +6934,50 @@ f64.div br $~lib/util/string/scientific|inlined.0 else - local.get $16 + local.get $17 i32.const 0 i32.lt_s if - local.get $17 - local.set $18 - local.get $16 - local.set $14 local.get $18 - i64.clz local.set $19 - local.get $18 + local.get $17 + local.set $13 + local.get $19 + i64.clz + local.set $20 local.get $19 + local.get $20 i64.shl - local.set $18 - local.get $14 + local.set $19 + local.get $13 i64.extend_i32_s - local.get $19 + local.get $20 i64.sub - local.set $19 + local.set $20 loop $for-loop|6 - local.get $14 + local.get $13 i32.const -14 i32.le_s + local.set $6 + local.get $6 if - local.get $18 + local.get $19 i64.const 6103515625 i64.div_u - local.set $20 - local.get $18 + local.set $21 + local.get $19 i64.const 6103515625 i64.rem_u - local.set $21 - local.get $20 - i64.clz local.set $22 - local.get $20 - local.get $22 + local.get $21 + i64.clz + local.set $23 + local.get $21 + local.get $23 i64.shl f64.const 0.00004294967296 - local.get $21 local.get $22 + local.get $23 i64.const 18 i64.sub i64.shl @@ -6880,138 +6986,140 @@ f64.nearest i64.trunc_f64_u i64.add - local.set $18 - local.get $19 - local.get $22 - i64.sub local.set $19 - local.get $14 + local.get $20 + local.get $23 + i64.sub + local.set $20 + local.get $13 i32.const 14 i32.add - local.set $14 + local.set $13 br $for-loop|6 end end i32.const 5 i32.const 0 - local.get $14 + local.get $13 i32.sub call $~lib/math/ipow32 i64.extend_i32_s - local.set $22 - local.get $18 - local.get $22 + local.set $23 + local.get $19 + local.get $23 i64.div_u + local.set $22 + local.get $19 + local.get $23 + i64.rem_u local.set $21 - local.get $18 local.get $22 - i64.rem_u - local.set $20 - local.get $21 i64.clz - local.set $23 - local.get $21 - local.get $23 + local.set $24 + local.get $22 + local.get $24 i64.shl - local.get $20 + local.get $21 f64.convert_i64_u i64.reinterpret_f64 - local.get $23 + local.get $24 i64.const 52 i64.shl i64.add f64.reinterpret_i64 - local.get $22 + local.get $23 f64.convert_i64_u f64.div i64.trunc_f64_u i64.add - local.set $18 - local.get $19 - local.get $23 - i64.sub local.set $19 - local.get $18 - f64.convert_i64_u + local.get $20 + local.get $24 + i64.sub + local.set $20 local.get $19 + f64.convert_i64_u + local.get $20 i32.wrap_i64 call $~lib/math/NativeMath.scalbn br $~lib/util/string/scientific|inlined.0 else - local.get $17 - local.set $18 - local.get $16 - local.set $15 local.get $18 + local.set $19 + local.get $17 + local.set $14 + local.get $19 i64.ctz - local.set $23 - local.get $18 - local.get $23 + local.set $24 + local.get $19 + local.get $24 i64.shr_u - local.set $18 - local.get $23 - local.get $15 + local.set $19 + local.get $24 + local.get $14 i64.extend_i32_s i64.add - local.set $23 - local.get $23 + local.set $24 + local.get $24 global.set $~lib/util/string/__fixmulShift loop $for-loop|7 - local.get $15 + local.get $14 i32.const 13 i32.ge_s + local.set $13 + local.get $13 if - local.get $18 - local.set $19 - i32.const 1220703125 - local.set $12 local.get $19 + local.set $20 + i32.const 1220703125 + local.set $15 + local.get $20 i64.const 4294967295 i64.and - local.get $12 + local.get $15 i64.extend_i32_u i64.mul - local.set $20 - local.get $19 + local.set $21 + local.get $20 i64.const 32 i64.shr_u - local.get $12 + local.get $15 i64.extend_i32_u i64.mul - local.get $20 + local.get $21 i64.const 32 i64.shr_u i64.add - local.set $21 - local.get $21 + local.set $22 + local.get $22 i64.const 32 i64.shr_u i32.wrap_i64 - local.set $14 - local.get $14 + local.set $6 + local.get $6 i32.clz - local.set $13 + local.set $12 i64.const 32 - local.get $13 + local.get $12 i64.extend_i32_u i64.sub - local.set $22 + local.set $23 global.get $~lib/util/string/__fixmulShift - local.get $22 + local.get $23 i64.add global.set $~lib/util/string/__fixmulShift - local.get $21 - local.get $13 + local.get $22 + local.get $12 i64.extend_i32_u i64.shl - local.get $20 + local.get $21 i64.const 4294967295 i64.and - local.get $22 + local.get $23 i64.shr_u i64.or - local.get $20 - local.get $13 + local.get $21 + local.get $12 i64.extend_i32_u i64.shl i64.const 31 @@ -7019,67 +7127,67 @@ i64.const 1 i64.and i64.add - local.set $18 - local.get $15 + local.set $19 + local.get $14 i32.const 13 i32.sub - local.set $15 + local.set $14 br $for-loop|7 end end - local.get $18 - local.set $19 + local.get $19 + local.set $20 i32.const 5 - local.get $15 + local.get $14 call $~lib/math/ipow32 - local.set $11 - local.get $19 + local.set $16 + local.get $20 i64.const 4294967295 i64.and - local.get $11 + local.get $16 i64.extend_i32_u i64.mul - local.set $22 - local.get $19 + local.set $23 + local.get $20 i64.const 32 i64.shr_u - local.get $11 + local.get $16 i64.extend_i32_u i64.mul - local.get $22 + local.get $23 i64.const 32 i64.shr_u - i64.add - local.set $21 - local.get $21 + i64.add + local.set $22 + local.get $22 i64.const 32 i64.shr_u i32.wrap_i64 local.set $13 local.get $13 i32.clz - local.set $14 + local.set $12 i64.const 32 - local.get $14 + local.get $12 i64.extend_i32_u i64.sub - local.set $20 + local.set $21 global.get $~lib/util/string/__fixmulShift - local.get $20 + local.get $21 i64.add global.set $~lib/util/string/__fixmulShift - local.get $21 - local.get $14 + local.get $22 + local.get $12 i64.extend_i32_u i64.shl - local.get $22 + local.get $23 i64.const 4294967295 i64.and - local.get $20 + local.get $21 i64.shr_u i64.or - local.get $22 - local.get $14 + local.get $23 + local.get $12 i64.extend_i32_u i64.shl i64.const 31 @@ -7087,12 +7195,12 @@ i64.const 1 i64.and i64.add - local.set $18 + local.set $19 global.get $~lib/util/string/__fixmulShift - local.set $23 - local.get $18 + local.set $24 + local.get $19 f64.convert_i64_u - local.get $23 + local.get $24 i32.wrap_i64 call $~lib/math/NativeMath.scalbn br $~lib/util/string/scientific|inlined.0 @@ -7668,6 +7776,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -7793,6 +7903,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -7841,6 +7953,7 @@ (local $12 i32) (local $13 i32) (local $14 i32) + (local $15 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -7925,14 +8038,16 @@ local.get $8 local.get $3 i32.lt_u + local.set $9 + local.get $9 if local.get $5 local.get $7 - local.tee $9 + local.tee $10 i32.const 1 i32.add local.set $7 - local.get $9 + local.get $10 i32.const 1 i32.shl i32.add @@ -7975,9 +8090,9 @@ return end i32.const 0 - local.set $10 - i32.const 0 local.set $11 + i32.const 0 + local.set $12 local.get $4 local.get $6 i32.eq @@ -7994,19 +8109,19 @@ local.get $0 local.get $7 call $~lib/memory/memory.copy - block $break|1 - loop $continue|1 - local.get $0 - local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $11 - i32.const -1 - i32.xor - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $0 + local.get $1 + local.get $11 + call $~lib/string/String#indexOf + local.tee $12 + i32.const -1 + i32.xor + local.set $8 + local.get $8 + if local.get $5 - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add @@ -8015,13 +8130,12 @@ i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $11 + local.get $12 local.get $4 i32.add - local.set $10 - br $continue|1 + local.set $11 + br $while-continue|1 end - unreachable end local.get $5 call $~lib/rt/pure/__retain @@ -8034,23 +8148,23 @@ return end i32.const 0 - local.set $12 - i32.const 0 local.set $13 - local.get $3 + i32.const 0 local.set $14 - block $break|2 - loop $continue|2 - local.get $0 - local.get $1 - local.get $10 - call $~lib/string/String#indexOf - local.tee $11 - i32.const -1 - i32.xor - i32.eqz - br_if $break|2 - local.get $12 + local.get $3 + local.set $15 + loop $while-continue|2 + local.get $0 + local.get $1 + local.get $11 + call $~lib/string/String#indexOf + local.tee $12 + i32.const -1 + i32.xor + local.set $5 + local.get $5 + if + local.get $13 i32.eqz if local.get $3 @@ -8058,49 +8172,49 @@ i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $12 + local.set $13 end - local.get $13 local.get $14 + local.get $15 i32.gt_u if - local.get $14 + local.get $15 i32.const 1 i32.shl - local.set $5 - local.get $12 - local.get $5 + local.set $7 + local.get $13 + local.get $7 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc - local.set $12 - local.get $5 - local.set $14 + local.set $13 + local.get $7 + local.set $15 end + local.get $12 local.get $11 - local.get $10 i32.sub - local.set $5 - local.get $12 + local.set $7 local.get $13 + local.get $14 i32.const 1 i32.shl i32.add local.get $0 - local.get $10 + local.get $11 i32.const 1 i32.shl i32.add - local.get $5 + local.get $7 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $13 - local.get $5 + local.get $14 + local.get $7 i32.add - local.set $13 - local.get $12 + local.set $14 local.get $13 + local.get $14 i32.const 1 i32.shl i32.add @@ -8109,50 +8223,49 @@ i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $13 + local.get $14 local.get $6 i32.add - local.set $13 - local.get $11 + local.set $14 + local.get $12 local.get $4 i32.add - local.set $10 - br $continue|2 + local.set $11 + br $while-continue|2 end - unreachable end - local.get $13 + local.get $14 if - local.get $13 local.get $14 + local.get $15 i32.gt_u if - local.get $14 + local.get $15 i32.const 1 i32.shl local.set $5 - local.get $12 + local.get $13 local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc - local.set $12 + local.set $13 local.get $5 - local.set $14 + local.set $15 end local.get $3 - local.get $10 + local.get $11 i32.sub local.set $5 local.get $5 if - local.get $12 local.get $13 + local.get $14 i32.const 1 i32.shl i32.add local.get $0 - local.get $10 + local.get $11 i32.const 1 i32.shl i32.add @@ -8162,28 +8275,28 @@ call $~lib/memory/memory.copy end local.get $5 - local.get $13 + local.get $14 i32.add local.set $5 - local.get $14 + local.get $15 local.get $5 i32.gt_u if - local.get $12 + local.get $13 local.get $5 i32.const 1 i32.shl call $~lib/rt/tlsf/__realloc - local.set $12 + local.set $13 end - local.get $12 + local.get $13 call $~lib/rt/pure/__retain - local.set $7 + local.set $8 local.get $1 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $7 + local.get $8 return end local.get $0 @@ -8510,6 +8623,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -8517,6 +8631,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -8728,13 +8844,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -8761,9 +8877,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -8848,6 +8963,8 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize + i32.const 1 + drop local.get $0 i32.load offset=4 local.get $2 @@ -8878,6 +8995,7 @@ (local $11 i32) (local $12 i32) (local $13 i32) + (local $14 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -8976,12 +9094,14 @@ local.get $7 local.get $5 i32.lt_s + local.set $8 + local.get $8 if i32.const 2 i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $8 - local.get $8 + local.set $9 + local.get $9 local.get $0 local.get $7 i32.const 1 @@ -8994,9 +9114,11 @@ i32.const 2 i32.shl i32.add - local.get $8 + local.get $9 i32.store - local.get $8 + i32.const 1 + drop + local.get $9 call $~lib/rt/pure/__retain drop local.get $7 @@ -9042,88 +9164,87 @@ i32.const 0 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $9 - i32.const 0 local.set $10 i32.const 0 local.set $11 i32.const 0 local.set $12 - block $break|1 - loop $continue|1 - local.get $0 - local.get $1 - local.get $11 - call $~lib/string/String#indexOf - local.tee $10 - i32.const -1 - i32.xor - i32.eqz - br_if $break|1 - local.get $10 + i32.const 0 + local.set $13 + loop $while-continue|1 + local.get $0 + local.get $1 + local.get $12 + call $~lib/string/String#indexOf + local.tee $11 + i32.const -1 + i32.xor + local.set $3 + local.get $3 + if local.get $11 + local.get $12 i32.sub - local.set $3 - local.get $3 + local.set $4 + local.get $4 i32.const 0 i32.gt_s if - local.get $3 + local.get $4 i32.const 1 i32.shl i32.const 1 call $~lib/rt/tlsf/__alloc - local.set $4 - local.get $4 + local.set $7 + local.get $7 local.get $0 - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add - local.get $3 + local.get $4 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 - local.get $4 + local.get $10 + local.get $7 call $~lib/array/Array<~lib/string/String>#push drop else - local.get $9 + local.get $10 i32.const 496 call $~lib/array/Array<~lib/string/String>#push drop end - local.get $12 + local.get $13 i32.const 1 i32.add - local.tee $12 + local.tee $13 local.get $2 i32.eq if - local.get $9 - local.set $4 + local.get $10 + local.set $7 local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $7 return end - local.get $10 + local.get $11 local.get $6 i32.add - local.set $11 - br $continue|1 + local.set $12 + br $while-continue|1 end - unreachable end - local.get $11 + local.get $12 i32.eqz if - local.get $9 + local.get $10 local.get $0 call $~lib/array/Array<~lib/string/String>#push drop - local.get $9 + local.get $10 local.set $3 local.get $1 call $~lib/rt/pure/__release @@ -9131,14 +9252,14 @@ return end local.get $5 - local.get $11 + local.get $12 i32.sub - local.set $13 - local.get $13 + local.set $14 + local.get $14 i32.const 0 i32.gt_s if - local.get $13 + local.get $14 i32.const 1 i32.shl i32.const 1 @@ -9146,25 +9267,25 @@ local.set $3 local.get $3 local.get $0 - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add - local.get $13 + local.get $14 i32.const 1 i32.shl call $~lib/memory/memory.copy - local.get $9 + local.get $10 local.get $3 call $~lib/array/Array<~lib/string/String>#push drop else - local.get $9 + local.get $10 i32.const 496 call $~lib/array/Array<~lib/string/String>#push drop end - local.get $9 + local.get $10 local.set $3 local.get $1 call $~lib/rt/pure/__release @@ -9202,6 +9323,10 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 + i32.const 1 + drop + i32.const 1 + drop local.get $2 i32.eqz if @@ -9288,50 +9413,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 13072 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -9341,15 +9469,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -9358,30 +9485,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -9398,13 +9525,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -9414,13 +9541,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -9465,6 +9592,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -9505,6 +9634,8 @@ local.set $4 local.get $1 local.set $3 + i32.const 0 + drop local.get $5 local.get $4 local.get $3 @@ -9587,77 +9718,78 @@ ) (func $~lib/util/number/utoa64_lut (; 92 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) (local $13 i64) + (local $14 i64) i32.const 13072 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + local.set $4 + local.get $4 + if local.get $1 i64.const 100000000 i64.div_u - local.set $4 + local.set $5 local.get $1 - local.get $4 + local.get $5 i64.const 100000000 i64.mul i64.sub i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u local.set $6 local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 + local.set $1 local.get $6 - i32.const 100 + i32.const 10000 i32.div_u - local.set $8 + local.set $7 local.get $6 - i32.const 100 + i32.const 10000 i32.rem_u - local.set $9 + local.set $8 local.get $7 i32.const 100 i32.div_u - local.set $10 + local.set $9 local.get $7 i32.const 100 i32.rem_u + local.set $10 + local.get $8 + i32.const 100 + i32.div_u local.set $11 + local.get $8 + i32.const 100 + i32.rem_u + local.set $12 local.get $3 - local.get $10 + local.get $11 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -9667,26 +9799,26 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store local.get $3 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -9696,15 +9828,14 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.get $1 @@ -9750,6 +9881,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -9770,6 +9903,8 @@ local.set $7 local.get $3 local.set $4 + i32.const 0 + drop local.get $5 local.get $7 local.get $4 @@ -9830,6 +9965,8 @@ local.set $6 local.get $4 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -9852,6 +9989,8 @@ local.set $8 local.get $4 local.set $5 + i32.const 0 + drop local.get $6 local.get $8 local.get $5 @@ -9897,14 +10036,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -9942,13 +10084,13 @@ i32.const 15936 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -9962,44 +10104,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -10008,7 +10150,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -10018,7 +10160,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -10028,7 +10170,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -10038,7 +10180,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -10048,7 +10190,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -10058,7 +10200,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -10068,7 +10210,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -10078,7 +10220,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -10088,7 +10230,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -10096,31 +10238,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -10137,8 +10279,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -10147,13 +10289,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -10163,228 +10305,230 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub local.get $22 - local.get $20 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 + local.get $22 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/number/prettify (; 98 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -10436,6 +10580,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -10544,6 +10690,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -10574,41 +10722,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -10654,8 +10804,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -10666,24 +10816,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -11204,6 +11356,7 @@ (local $16 i32) (local $17 i32) (local $18 i32) + (local $19 i32) local.get $0 local.set $2 local.get $0 @@ -11305,32 +11458,32 @@ global.get $~lib/util/casemap/exceptions i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + local.set $17 + local.get $17 + if local.get $14 i32.const 1 i32.shr_u - local.set $17 + local.set $18 local.get $16 local.get $15 - local.get $17 + local.get $18 i32.add i32.const 2 i32.mul i32.add i32.load8_u - local.set $18 - local.get $18 + local.set $19 + local.get $19 local.get $0 i32.eq if local.get $9 local.get $16 local.get $15 - local.get $17 + local.get $18 i32.add i32.const 2 i32.mul @@ -11373,26 +11526,25 @@ i32.sub return else - local.get $18 + local.get $19 local.get $0 i32.gt_u if - local.get $17 + local.get $18 local.set $14 else local.get $15 - local.get $17 + local.get $18 i32.add local.set $15 local.get $14 - local.get $17 + local.get $18 i32.sub local.set $14 end end - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 ) @@ -11411,6 +11563,8 @@ (local $12 i32) (local $13 i32) (local $14 i32) + (local $15 i32) + (local $16 i32) local.get $0 call $~lib/string/String#get:length local.set $1 @@ -11443,6 +11597,8 @@ local.get $6 local.get $1 i32.lt_u + local.set $7 + local.get $7 if block $for-continue|0 local.get $0 @@ -11451,10 +11607,10 @@ i32.shl i32.add i32.load16_u - local.set $7 - local.get $7 local.set $8 local.get $8 + local.set $9 + local.get $9 i32.const -128 i32.and i32.eqz @@ -11465,17 +11621,19 @@ i32.shl i32.add block $~lib/util/string/toUpper8|inlined.0 (result i32) - local.get $7 - local.set $8 + local.get $8 + local.set $9 + i32.const 0 + drop global.get $~lib/util/string/upperTable127Ptr - local.get $8 + local.get $9 i32.add i32.load8_u br $~lib/util/string/toUpper8|inlined.0 end i32.store16 else - local.get $7 + local.get $8 i32.const 55295 i32.sub i32.const 1025 @@ -11496,32 +11654,32 @@ i32.shl i32.add i32.load16_u offset=2 - local.set $8 - local.get $8 + local.set $9 + local.get $9 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $7 - local.set $9 - local.get $7 + local.get $8 + local.set $10 + local.get $8 i32.const 1023 i32.and i32.const 10 i32.shl - local.get $8 + local.get $9 i32.const 1023 i32.and i32.or i32.const 65536 i32.add - local.set $7 + local.set $8 local.get $6 i32.const 1 i32.add local.set $6 - local.get $7 + local.get $8 i32.const 131072 i32.ge_u if @@ -11530,8 +11688,8 @@ i32.const 1 i32.shl i32.add + local.get $10 local.get $9 - local.get $8 i32.const 16 i32.shl i32.or @@ -11544,7 +11702,7 @@ end end end - local.get $7 + local.get $8 i32.const 9424 i32.sub i32.const 25 @@ -11555,130 +11713,129 @@ i32.const 1 i32.shl i32.add - local.get $7 + local.get $8 i32.const 26 i32.sub i32.store16 else i32.const -1 - local.set $8 - local.get $7 + local.set $9 + local.get $8 i32.const 223 i32.sub i32.const 64056 i32.le_u if block $~lib/util/casemap/bsearch|inlined.0 (result i32) - local.get $7 - local.set $11 + local.get $8 + local.set $12 local.get $3 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 i32.const 0 - local.set $12 - block $break|1 - loop $continue|1 - local.get $12 - local.get $9 - i32.le_s - i32.eqz - br_if $break|1 - local.get $12 - local.get $9 + local.set $13 + loop $while-continue|1 + local.get $13 + local.get $10 + i32.le_s + local.set $14 + local.get $14 + if + local.get $13 + local.get $10 i32.add i32.const 3 i32.shr_u i32.const 2 i32.shl - local.set $13 - local.get $10 - local.get $13 + local.set $15 + local.get $11 + local.get $15 i32.const 1 i32.shl i32.add i32.load16_u - local.get $11 + local.get $12 i32.sub - local.set $14 - local.get $14 + local.set $16 + local.get $16 i32.const 0 i32.eq if - local.get $13 + local.get $15 br $~lib/util/casemap/bsearch|inlined.0 else - local.get $14 + local.get $16 i32.const 31 i32.shr_u if - local.get $13 + local.get $15 i32.const 4 i32.add - local.set $12 + local.set $13 else - local.get $13 + local.get $15 i32.const 4 i32.sub - local.set $9 + local.set $10 end end - br $continue|1 + br $while-continue|1 end - unreachable end i32.const -1 end - local.set $8 + local.set $9 end - local.get $8 + local.get $9 i32.const -1 i32.xor if local.get $3 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add i32.load offset=2 - local.set $12 + local.set $13 local.get $3 - local.get $8 + local.get $9 i32.const 1 i32.shl i32.add i32.load16_u offset=6 - local.set $11 + local.set $12 local.get $2 local.get $5 i32.const 1 i32.shl i32.add - local.get $12 + local.get $13 i32.store local.get $2 local.get $5 i32.const 1 i32.shl i32.add - local.get $11 + local.get $12 i32.store16 offset=4 local.get $5 i32.const 1 - local.get $11 + local.get $12 i32.const 0 i32.ne i32.add i32.add local.set $5 else - local.get $7 + local.get $8 i32.const 1 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.set $11 - local.get $11 + local.set $12 + local.get $12 i32.const 65536 i32.lt_s if @@ -11687,32 +11844,32 @@ i32.const 1 i32.shl i32.add - local.get $11 + local.get $12 i32.store16 else - local.get $11 + local.get $12 i32.const 65536 i32.sub - local.set $11 - local.get $11 + local.set $12 + local.get $12 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.set $12 - local.get $11 + local.set $13 + local.get $12 i32.const 1023 i32.and i32.const 56320 i32.or - local.set $10 + local.set $11 local.get $2 local.get $5 i32.const 1 i32.shl i32.add - local.get $12 - local.get $10 + local.get $13 + local.get $11 i32.const 16 i32.shl i32.or @@ -11755,6 +11912,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/string/String#get:length local.set $1 @@ -11781,6 +11939,8 @@ local.get $4 local.get $1 i32.lt_u + local.set $5 + local.get $5 if block $for-continue|0 local.get $0 @@ -11789,10 +11949,10 @@ i32.shl i32.add i32.load16_u - local.set $5 - local.get $5 local.set $6 local.get $6 + local.set $7 + local.get $7 i32.const -128 i32.and i32.eqz @@ -11803,17 +11963,19 @@ i32.shl i32.add block $~lib/util/string/toLower8|inlined.0 (result i32) - local.get $5 - local.set $6 - global.get $~lib/util/string/lowerTable127Ptr local.get $6 + local.set $7 + i32.const 0 + drop + global.get $~lib/util/string/lowerTable127Ptr + local.get $7 i32.add i32.load8_u br $~lib/util/string/toLower8|inlined.0 end i32.store16 else - local.get $5 + local.get $6 i32.const 55295 i32.sub i32.const 1025 @@ -11834,32 +11996,32 @@ i32.shl i32.add i32.load16_u offset=2 - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.const 56319 i32.sub i32.const 1025 i32.lt_u if - local.get $5 - local.set $7 - local.get $5 + local.get $6 + local.set $8 + local.get $6 i32.const 1023 i32.and i32.const 10 i32.shl - local.get $6 + local.get $7 i32.const 1023 i32.and i32.or i32.const 65536 i32.add - local.set $5 + local.set $6 local.get $4 i32.const 1 i32.add local.set $4 - local.get $5 + local.get $6 i32.const 131072 i32.ge_u if @@ -11868,8 +12030,8 @@ i32.const 1 i32.shl i32.add + local.get $8 local.get $7 - local.get $6 i32.const 16 i32.shl i32.or @@ -11882,7 +12044,7 @@ end end end - local.get $5 + local.get $6 i32.const 304 i32.eq if @@ -11902,7 +12064,7 @@ i32.add local.set $3 else - local.get $5 + local.get $6 i32.const 9398 i32.sub i32.const 25 @@ -11913,18 +12075,18 @@ i32.const 1 i32.shl i32.add - local.get $5 + local.get $6 i32.const 26 i32.add i32.store16 else - local.get $5 + local.get $6 i32.const 0 call $~lib/util/casemap/casemap i32.const 2097151 i32.and - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.const 65536 i32.lt_s if @@ -11933,32 +12095,32 @@ i32.const 1 i32.shl i32.add - local.get $6 + local.get $7 i32.store16 else - local.get $6 + local.get $7 i32.const 65536 i32.sub - local.set $6 - local.get $6 + local.set $7 + local.get $7 i32.const 10 i32.shr_u i32.const 55296 i32.or - local.set $7 - local.get $6 + local.set $8 + local.get $7 i32.const 1023 i32.and i32.const 56320 i32.or - local.set $8 + local.set $9 local.get $2 local.get $3 i32.const 1 i32.shl i32.add - local.get $7 local.get $8 + local.get $9 i32.const 16 i32.shl i32.or @@ -12329,12 +12491,13 @@ (local $264 i32) (local $265 i32) (local $266 i32) - (local $267 i64) + (local $267 i32) (local $268 i64) (local $269 i64) (local $270 i64) (local $271 i64) (local $272 i64) + (local $273 i64) global.get $std/string/str i32.const 32 i32.eq @@ -20085,190 +20248,192 @@ local.get $263 i32.const 1114111 i32.le_s + local.set $264 + local.get $264 if local.get $263 call $~lib/string/String.fromCodePoint - local.set $264 - local.get $264 - call $~lib/string/String#toLowerCase local.set $265 - local.get $264 - call $~lib/string/String#toUpperCase + local.get $265 + call $~lib/string/String#toLowerCase local.set $266 local.get $265 + call $~lib/string/String#toUpperCase + local.set $267 + local.get $266 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $269 - local.get $265 + local.set $270 + local.get $266 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $267 + local.tee $268 i64.const 0 i64.ge_u if - local.get $269 - local.get $267 + local.get $270 + local.get $268 i64.const 16 i64.shl i64.add - local.set $269 + local.set $270 end - local.get $265 + local.get $266 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $268 + local.tee $269 i64.const 0 i64.ge_u if + local.get $270 local.get $269 - local.get $268 i64.const 32 i64.shl i64.add - local.set $269 + local.set $270 end - local.get $266 + local.get $267 i32.const 0 call $~lib/string/String#codePointAt i64.extend_i32_s - local.set $270 - local.get $266 + local.set $271 + local.get $267 i32.const 1 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $267 + local.tee $268 i64.const 0 i64.ge_u if - local.get $270 - local.get $267 + local.get $271 + local.get $268 i64.const 16 i64.shl i64.add - local.set $270 + local.set $271 end - local.get $266 + local.get $267 i32.const 2 call $~lib/string/String#codePointAt i64.extend_i32_s - local.tee $268 + local.tee $269 i64.const 0 i64.ge_u if - local.get $270 - local.get $268 + local.get $271 + local.get $269 i64.const 32 i64.shl i64.add - local.set $270 + local.set $271 end local.get $263 i32.const 0 call $std/string/toLowerCaseFromIndex i64.extend_i32_s - local.set $271 + local.set $272 local.get $263 i32.const 1 call $std/string/toLowerCaseFromIndex i64.extend_i32_s - local.tee $267 + local.tee $268 i64.const 0 i64.ge_u if - local.get $271 - local.get $267 + local.get $272 + local.get $268 i64.const 16 i64.shl i64.add - local.set $271 + local.set $272 end local.get $263 i32.const 2 call $std/string/toLowerCaseFromIndex i64.extend_i32_s - local.tee $268 + local.tee $269 i64.const 0 i64.ge_u if - local.get $271 - local.get $268 + local.get $272 + local.get $269 i64.const 32 i64.shl i64.add - local.set $271 + local.set $272 end local.get $263 i32.const 0 call $std/string/toUpperCaseFromIndex i64.extend_i32_s - local.set $272 + local.set $273 local.get $263 i32.const 1 call $std/string/toUpperCaseFromIndex i64.extend_i32_s - local.tee $267 + local.tee $268 i64.const 0 i64.ge_u if - local.get $272 - local.get $267 + local.get $273 + local.get $268 i64.const 16 i64.shl i64.add - local.set $272 + local.set $273 end local.get $263 i32.const 2 call $std/string/toUpperCaseFromIndex i64.extend_i32_s - local.tee $268 + local.tee $269 i64.const 0 i64.ge_u if - local.get $272 - local.get $268 + local.get $273 + local.get $269 i64.const 32 i64.shl i64.add - local.set $272 + local.set $273 end - local.get $269 - local.get $271 + local.get $270 + local.get $272 i64.ne if i32.const 28272 i32.const 3 local.get $263 f64.convert_i32_s - local.get $269 + local.get $270 f64.convert_i64_u - local.get $271 + local.get $272 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $270 - local.get $272 + local.get $271 + local.get $273 i64.ne if i32.const 28352 i32.const 3 local.get $263 f64.convert_i32_s - local.get $270 + local.get $271 f64.convert_i64_u - local.get $272 + local.get $273 f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace end - local.get $269 - local.get $271 + local.get $270 + local.get $272 i64.eq i32.eqz if @@ -20279,8 +20444,8 @@ call $~lib/builtins/abort unreachable end - local.get $270 - local.get $272 + local.get $271 + local.get $273 i64.eq i32.eqz if @@ -20291,12 +20456,12 @@ call $~lib/builtins/abort unreachable end - local.get $264 - call $~lib/rt/pure/__release local.get $265 call $~lib/rt/pure/__release local.get $266 call $~lib/rt/pure/__release + local.get $267 + call $~lib/rt/pure/__release local.get $263 i32.const 1 i32.add @@ -20846,7 +21011,8 @@ call $start:std/string ) (func $~lib/array/Array#__visit_impl (; 109 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 110 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20896,6 +21062,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -20966,6 +21134,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if @@ -20982,6 +21152,9 @@ (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) + i32.const 1 + drop local.get $0 i32.load offset=4 local.set $2 @@ -20992,19 +21165,19 @@ i32.shl i32.add local.set $3 - block $break|0 - loop $continue|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if local.get $2 i32.load - local.set $4 - local.get $4 + local.set $5 + local.get $5 if - local.get $4 + local.get $5 local.get $1 call $~lib/rt/pure/__visit end @@ -21012,28 +21185,33 @@ i32.const 4 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end ) (func $~lib/array/Array#__visit_impl (; 112 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 113 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 114 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 115 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 116 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 117 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/__visit_members (; 118 ;) (param $0 i32) (param $1 i32) (local $2 i32) diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 97aba1b743..64400fc285 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -328,7 +328,7 @@ local.get $2 i32.sub local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $1 i32.const 32 i32.ge_u @@ -359,7 +359,7 @@ i32.const 32 i32.add local.set $0 - br $continue|0 + br $while-continue|0 end end end @@ -537,7 +537,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -558,20 +558,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -584,18 +582,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -644,7 +640,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -662,15 +658,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -730,7 +724,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -774,7 +768,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -936,7 +930,7 @@ i32.add i32.load local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $0 if local.get $0 @@ -954,15 +948,13 @@ if local.get $0 return - else - local.get $0 - i32.load offset=8 - i32.const -2 - i32.and - local.set $0 - br $continue|0 end - unreachable + local.get $0 + i32.load offset=8 + i32.const -2 + i32.and + local.set $0 + br $while-continue|0 end end i32.const 0 @@ -1004,7 +996,7 @@ local.set $7 local.get $4 local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $7 i32.ne @@ -1048,7 +1040,7 @@ i32.const 12 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $5 @@ -1278,7 +1270,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1304,10 +1296,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1328,11 +1320,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1353,7 +1345,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1365,7 +1357,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1386,10 +1378,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1405,11 +1397,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1423,7 +1415,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 0006b7c26f..75e37ef76d 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -183,6 +183,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 @@ -201,6 +203,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -208,6 +211,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -419,13 +424,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -452,9 +457,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -638,6 +642,7 @@ (local $1 i32) (local $2 i32) (local $3 i32) + (local $4 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -658,6 +663,8 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $1 local.get $0 @@ -688,6 +695,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -706,6 +714,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -722,15 +732,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -747,39 +757,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -790,17 +802,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -878,6 +889,7 @@ (func $~lib/map/Map<~lib/string/String,usize>#find (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $1 call $~lib/rt/stub/__retain local.set $1 @@ -892,11 +904,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -912,10 +924,10 @@ end if local.get $3 - local.set $4 + local.set $5 local.get $1 call $~lib/rt/stub/__release - local.get $4 + local.get $5 return end local.get $3 @@ -925,9 +937,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 local.set $4 @@ -947,6 +958,8 @@ local.get $1 call $~lib/rt/stub/__retain local.set $2 + i32.const 1 + drop local.get $2 call $~lib/util/hash/hashStr local.set $3 @@ -976,6 +989,8 @@ local.get $1 call $~lib/rt/stub/__retain local.set $2 + i32.const 1 + drop local.get $2 call $~lib/util/hash/hashStr local.set $3 @@ -1017,6 +1032,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -1051,58 +1067,60 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) - local.get $9 + local.get $10 i32.load call $~lib/rt/stub/__retain - local.set $11 - local.get $11 - call $~lib/util/hash/hashStr local.set $12 - local.get $11 - call $~lib/rt/stub/__release + i32.const 1 + drop + local.get $12 + call $~lib/util/hash/hashStr + local.set $13 local.get $12 + call $~lib/rt/stub/__release + local.get $13 br $~lib/util/hash/HASH<~lib/string/String>|inlined.3 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -1114,26 +1132,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/stub/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/stub/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -1141,19 +1158,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/stub/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/stub/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -1179,6 +1196,8 @@ local.get $1 call $~lib/rt/stub/__retain local.set $3 + i32.const 1 + drop local.get $3 call $~lib/util/hash/hashStr local.set $4 @@ -1195,6 +1214,8 @@ local.set $6 local.get $6 if + i32.const 0 + drop local.get $6 local.get $2 i32.store offset=4 @@ -1325,6 +1346,7 @@ ) (func $~lib/map/Map#find (; 22 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) + (local $4 i32) local.get $0 i32.load local.get $2 @@ -1336,11 +1358,11 @@ i32.add i32.load local.set $3 - block $break|0 - loop $continue|0 - local.get $3 - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + local.set $4 + local.get $4 + if local.get $3 i32.load offset=8 i32.const 1 @@ -1365,9 +1387,8 @@ i32.xor i32.and local.set $3 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 ) @@ -1383,6 +1404,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 i32.const 1 i32.add @@ -1417,53 +1439,65 @@ local.set $7 local.get $5 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.ne - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.ne + local.set $9 + local.get $9 + if local.get $6 - local.set $9 - local.get $9 + local.set $10 + local.get $10 i32.load offset=8 i32.const 1 i32.and i32.eqz if local.get $8 - local.set $10 + local.set $11 + local.get $11 local.get $10 - local.get $9 i32.load i32.store + local.get $11 local.get $10 - local.get $9 i32.load offset=4 i32.store offset=4 block $~lib/util/hash/HASH|inlined.1 (result i32) - local.get $9 + local.get $10 i32.load - local.set $11 - local.get $11 + local.set $12 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop + local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 end local.get $1 i32.and - local.set $11 + local.set $12 local.get $3 - local.get $11 + local.get $12 i32.const 4 i32.mul i32.add - local.set $12 - local.get $10 - local.get $12 + local.set $13 + local.get $11 + local.get $13 i32.load i32.store offset=8 - local.get $12 + local.get $13 local.get $8 i32.store local.get $8 @@ -1475,26 +1509,25 @@ i32.const 12 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.tee $9 local.get $3 - local.tee $10 + local.tee $11 local.get $9 i32.load - local.tee $12 + local.tee $13 i32.ne if - local.get $10 + local.get $11 call $~lib/rt/stub/__retain - local.set $10 - local.get $12 + local.set $11 + local.get $13 call $~lib/rt/stub/__release end - local.get $10 + local.get $11 i32.store local.get $0 local.get $1 @@ -1502,19 +1535,19 @@ local.get $0 local.tee $9 local.get $5 - local.tee $11 + local.tee $12 local.get $9 i32.load offset=8 - local.tee $10 + local.tee $11 i32.ne if - local.get $11 + local.get $12 call $~lib/rt/stub/__retain - local.set $11 - local.get $10 + local.set $12 + local.get $11 call $~lib/rt/stub/__release end - local.get $11 + local.get $12 i32.store offset=8 local.get $0 local.get $4 @@ -1539,6 +1572,18 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $3 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -1551,6 +1596,8 @@ local.set $5 local.get $5 if + i32.const 1 + drop local.get $5 i32.load offset=4 local.set $3 @@ -1719,6 +1766,18 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -1735,6 +1794,18 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -1779,39 +1850,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -1819,13 +1892,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -1866,9 +1939,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2025,13 +2097,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2106,9 +2178,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2147,13 +2218,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2228,9 +2299,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2255,13 +2325,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2336,9 +2406,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -2808,6 +2877,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2821,6 +2891,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2854,13 +2926,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2871,30 +2943,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -2911,37 +2982,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -2952,15 +3021,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -2977,17 +3046,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3000,16 +3068,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3021,9 +3088,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index de50811f95..d31fbe7073 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -1692,7 +1692,7 @@ i64.shl i64.or local.set $4 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 32 i32.ge_u @@ -1723,7 +1723,7 @@ i32.const 32 i32.add local.set $1 - br $continue|0 + br $while-continue|0 end end end @@ -1823,7 +1823,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -1849,10 +1849,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -1873,11 +1873,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -1898,7 +1898,7 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end else @@ -1910,7 +1910,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -1931,10 +1931,10 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u @@ -1950,11 +1950,11 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if local.get $3 @@ -1968,7 +1968,7 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end @@ -3063,42 +3063,43 @@ i32.const 1 i32.sub local.set $2 - loop $continue|1 - block $break|1 - local.get $2 - i32.const 0 - i32.lt_s - br_if $break|1 - local.get $0 - local.get $2 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $5 - i32.const 2 - global.set $~lib/argc - local.get $4 - local.get $5 - call $~lib/util/sort/COMPARATOR~anonymous|0 - i32.const 0 - i32.ge_s - br_if $break|1 - local.get $2 - local.tee $6 - i32.const 1 - i32.sub - local.set $2 - local.get $0 - local.get $6 - i32.const 1 - i32.add - i32.const 3 - i32.shl - i32.add - local.get $5 - f64.store - br $continue|1 + loop $while-continue|1 + local.get $2 + i32.const 0 + i32.ge_s + if + block $while-break|1 + local.get $0 + local.get $2 + i32.const 3 + i32.shl + i32.add + f64.load + local.set $5 + i32.const 2 + global.set $~lib/argc + local.get $4 + local.get $5 + call $~lib/util/sort/COMPARATOR~anonymous|0 + i32.const 0 + i32.ge_s + br_if $while-break|1 + local.get $2 + local.tee $6 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + local.get $6 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $5 + f64.store + br $while-continue|1 + end end end local.get $0 @@ -3150,7 +3151,7 @@ if local.get $3 local.set $2 - loop $continue|1 + loop $while-continue|1 local.get $2 i32.const 1 i32.and @@ -3176,7 +3177,7 @@ i32.const 1 i32.shr_s local.set $2 - br $continue|1 + br $while-continue|1 end end local.get $0 @@ -3269,7 +3270,7 @@ f64.store i32.const 1 local.set $1 - loop $continue|3 + loop $while-continue|3 local.get $5 local.get $1 i32.const 5 @@ -3294,10 +3295,10 @@ if local.get $2 local.set $1 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $1 i32.const 0 i32.gt_s @@ -3352,7 +3353,7 @@ i32.const 1 i32.shr_s local.set $1 - br $continue|4 + br $while-continue|4 end end local.get $3 @@ -11951,7 +11952,7 @@ i32.shl end local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 128 i32.gt_s @@ -11977,7 +11978,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -12193,7 +12194,7 @@ i64.or end local.set $1 - loop $continue|0 + loop $while-continue|0 local.get $2 i64.const 1024 i64.gt_s @@ -12219,7 +12220,7 @@ i64.const 1 i64.sub local.set $2 - br $continue|0 + br $while-continue|0 end end local.get $1 @@ -16059,7 +16060,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -16077,7 +16078,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -16116,7 +16117,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -16134,7 +16135,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -17453,7 +17454,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -17473,7 +17474,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -17512,7 +17513,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -17532,7 +17533,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -18433,7 +18434,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -18451,7 +18452,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -18490,7 +18491,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -18508,7 +18509,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -19404,7 +19405,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -19422,7 +19423,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -19461,7 +19462,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -19479,7 +19480,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -20376,7 +20377,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -20394,7 +20395,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -20433,7 +20434,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -20451,7 +20452,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -20932,7 +20933,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 local.get $3 i32.lt_s @@ -20950,7 +20951,7 @@ i32.const 1 i32.add local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -20989,7 +20990,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $2 i32.const 0 i32.ge_s @@ -21007,7 +21008,7 @@ i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end end i32.const -1 @@ -21474,7 +21475,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -21502,7 +21503,7 @@ i32.const 1 i32.add local.set $1 - br $continue|0 + br $while-continue|0 end end i32.const 0 @@ -21529,7 +21530,7 @@ local.get $0 i32.load offset=4 local.set $0 - loop $continue|0 + loop $while-continue|0 local.get $1 local.get $2 i32.lt_s @@ -21557,7 +21558,7 @@ i32.const 1 i32.add local.set $1 - br $continue|0 + br $while-continue|0 end end i32.const 0 @@ -21613,7 +21614,7 @@ ) (func $~lib/util/number/utoa_simple (; 360 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - loop $continue|0 + loop $do-continue|0 local.get $1 i32.const 10 i32.div_u @@ -21632,7 +21633,7 @@ i32.add i32.store16 local.tee $1 - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa32 (; 361 ;) (param $0 i32) (result i32) @@ -21941,7 +21942,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -21962,20 +21963,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load16_u local.tee $3 @@ -21988,18 +21987,16 @@ local.get $4 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 @@ -23297,7 +23294,7 @@ ) (func $~lib/util/number/utoa_simple (; 393 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i64) - loop $continue|0 + loop $do-continue|0 local.get $1 i64.const 10 i64.div_u @@ -23319,7 +23316,7 @@ local.tee $1 i64.const 0 i64.ne - br_if $continue|0 + br_if $do-continue|0 end ) (func $~lib/util/number/itoa64 (; 394 ;) (param $0 i64) (result i32) @@ -23938,7 +23935,7 @@ i32.const 3284 i32.load local.set $13 - loop $continue|0 + loop $while-continue|0 local.get $4 i32.const 0 i32.gt_s @@ -24096,81 +24093,83 @@ i64.add local.tee $1 local.get $5 - i64.gt_u - br_if $continue|0 - local.get $4 - global.get $~lib/util/number/_K - i32.add - global.set $~lib/util/number/_K - local.get $13 - local.get $4 - i32.const 2 - i32.shl - i32.add - i64.load32_u - local.get $10 - i64.extend_i32_s - i64.shl - local.set $3 - local.get $0 - local.get $6 - i32.const 1 - i32.sub - i32.const 1 - i32.shl - i32.add - local.tee $2 - i32.load16_u - local.set $4 - loop $continue|2 + i64.le_u + if + local.get $4 + global.get $~lib/util/number/_K + i32.add + global.set $~lib/util/number/_K + local.get $13 + local.get $4 + i32.const 2 + i32.shl + i32.add + i64.load32_u + local.get $10 + i64.extend_i32_s + i64.shl + local.set $3 + local.get $0 + local.get $6 i32.const 1 - local.get $9 - local.get $1 - i64.sub - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.sub - i64.gt_u - local.get $1 - local.get $3 - i64.add - local.get $9 - i64.lt_u - select - i32.const 0 - local.get $5 - local.get $1 - i64.sub - local.get $3 - i64.ge_u - i32.const 0 - local.get $1 - local.get $9 - i64.lt_u - select - select - if - local.get $4 + i32.sub + i32.const 1 + i32.shl + i32.add + local.tee $2 + i32.load16_u + local.set $4 + loop $while-continue|3 i32.const 1 - i32.sub - local.set $4 + local.get $9 + local.get $1 + i64.sub local.get $1 local.get $3 i64.add - local.set $1 - br $continue|2 + local.get $9 + i64.sub + i64.gt_u + local.get $1 + local.get $3 + i64.add + local.get $9 + i64.lt_u + select + i32.const 0 + local.get $5 + local.get $1 + i64.sub + local.get $3 + i64.ge_u + i32.const 0 + local.get $1 + local.get $9 + i64.lt_u + select + select + if + local.get $4 + i32.const 1 + i32.sub + local.set $4 + local.get $1 + local.get $3 + i64.add + local.set $1 + br $while-continue|3 + end end + local.get $2 + local.get $4 + i32.store16 + local.get $6 + return end - local.get $2 - local.get $4 - i32.store16 - local.get $6 - return + br $while-continue|0 end end - loop $continue|3 (result i32) + loop $while-continue|4 (result i32) local.get $5 i64.const 10 i64.mul @@ -24217,7 +24216,7 @@ local.tee $12 local.get $5 i64.ge_u - br_if $continue|3 + br_if $while-continue|4 local.get $4 global.get $~lib/util/number/_K i32.add @@ -24245,7 +24244,7 @@ local.tee $2 i32.load16_u local.set $4 - loop $continue|4 + loop $while-continue|6 i32.const 1 local.get $3 local.get $1 @@ -24283,7 +24282,7 @@ local.get $11 i64.add local.set $1 - br $continue|4 + br $while-continue|6 end end local.get $2 @@ -24444,34 +24443,34 @@ local.get $0 i32.const 4 i32.add - local.tee $0 + local.tee $1 local.get $3 i32.const 1 i32.sub - local.tee $2 + local.tee $0 i32.const 0 i32.lt_s - local.tee $1 + local.tee $2 if i32.const 0 - local.get $2 + local.get $0 i32.sub - local.set $2 + local.set $0 end - local.get $2 - local.get $2 + local.get $0 + local.get $0 call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.tee $2 + local.tee $0 call $~lib/util/number/utoa_simple - local.get $0 + local.get $1 i32.const 45 i32.const 43 - local.get $1 + local.get $2 select i32.store16 - local.get $2 + local.get $0 i32.const 2 i32.add else @@ -25460,13 +25459,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Int8Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -25496,24 +25495,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Int8Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Int8Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Int8Array#__get i32.ne if @@ -25524,16 +25521,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -25605,13 +25602,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Uint8Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -25639,24 +25636,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Uint8Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Uint8Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Uint8Array#__get i32.ne if @@ -25667,16 +25662,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -25748,13 +25743,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Uint8ClampedArray#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -25782,24 +25777,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Uint8ClampedArray.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Uint8ClampedArray#__get i32.ne if @@ -25810,16 +25803,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -25891,13 +25884,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Int16Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -25927,24 +25920,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Int16Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Int16Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Int16Array#__get i32.ne if @@ -25955,16 +25946,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26036,13 +26027,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Uint16Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26070,24 +26061,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Uint16Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Uint16Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Uint16Array#__get i32.ne if @@ -26098,16 +26087,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26179,13 +26168,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Int32Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26211,24 +26200,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Int32Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Int32Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Int32Array#__get i32.ne if @@ -26239,16 +26226,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26320,13 +26307,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Uint32Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26352,24 +26339,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Uint32Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Uint32Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Uint32Array#__get i32.ne if @@ -26380,16 +26365,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26461,13 +26446,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Int64Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26494,24 +26479,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Int64Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Int64Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Int64Array#__get i64.ne if @@ -26522,16 +26505,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26603,13 +26586,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Uint64Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26636,24 +26619,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Uint64Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Uint64Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Uint64Array#__get i64.ne if @@ -26664,16 +26645,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26745,13 +26726,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Float32Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26778,24 +26759,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Float32Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Float32Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Float32Array#__get f32.ne if @@ -26806,16 +26785,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -26887,13 +26866,13 @@ (local $5 i32) i32.const 3452 i32.load - local.tee $2 + local.tee $3 call $~lib/typedarray/Float64Array#constructor local.tee $5 local.set $1 loop $for-loop|0 local.get $0 - local.get $2 + local.get $3 i32.lt_s if local.get $1 @@ -26920,24 +26899,22 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $3 + local.set $0 i32.const 1 global.set $~lib/argc - local.get $3 + local.get $0 call $~lib/typedarray/Float64Array.wrap local.set $4 - i32.const 0 - local.set $0 loop $for-loop|1 - local.get $0 local.get $2 + local.get $3 i32.lt_s if local.get $1 - local.get $0 + local.get $2 call $~lib/typedarray/Float64Array#__get local.get $4 - local.get $0 + local.get $2 call $~lib/typedarray/Float64Array#__get f64.ne if @@ -26948,16 +26925,16 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $2 i32.const 1 i32.add - local.set $0 + local.set $2 br $for-loop|1 end end local.get $5 call $~lib/rt/pure/__release - local.get $3 + local.get $0 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 945fc7bf97..2d81c801c1 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -246,6 +246,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -264,6 +266,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -316,6 +320,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -455,6 +461,8 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if @@ -468,6 +476,8 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and @@ -561,6 +571,8 @@ local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and @@ -617,6 +629,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -636,6 +650,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -690,6 +706,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -800,6 +818,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -837,6 +857,8 @@ local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -868,6 +890,8 @@ nop end else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -951,6 +975,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) + (local $11 i32) global.get $~lib/rt/tlsf/ROOT local.set $0 local.get $0 @@ -1010,50 +1036,54 @@ local.get $5 i32.const 23 i32.lt_u + local.set $4 + local.get $4 if local.get $0 - local.set $7 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 i32.const 0 - local.set $7 + local.set $8 loop $for-loop|1 - local.get $7 + local.get $8 i32.const 16 i32.lt_u + local.set $7 + local.get $7 if local.get $0 - local.set $9 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 - local.get $7 + local.get $8 i32.const 1 i32.add - local.set $7 + local.set $8 br $for-loop|1 end end @@ -1173,6 +1203,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1245,6 +1277,8 @@ i32.add i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if @@ -1349,6 +1383,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1451,6 +1487,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $~lib/rt/pure/ROOTS local.set $0 local.get $0 @@ -1463,20 +1500,22 @@ local.get $2 local.get $3 i32.lt_u + local.set $4 + local.get $4 if local.get $2 i32.load - local.set $4 - local.get $4 - i32.load offset=4 local.set $5 local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 i32.const 1879048192 i32.and i32.const 805306368 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.const 0 @@ -1485,23 +1524,23 @@ i32.const 0 end if - local.get $4 + local.get $5 call $~lib/rt/pure/markGray local.get $1 - local.get $4 + local.get $5 i32.store local.get $1 i32.const 4 i32.add local.set $1 else - local.get $5 + local.get $6 i32.const 1879048192 i32.and i32.const 0 i32.eq if (result i32) - local.get $5 + local.get $6 i32.const 268435455 i32.and i32.eqz @@ -1510,11 +1549,11 @@ end if global.get $~lib/rt/tlsf/ROOT - local.get $4 + local.get $5 call $~lib/rt/tlsf/freeBlock else - local.get $4 local.get $5 + local.get $6 i32.const -2147483648 i32.const -1 i32.xor @@ -1537,6 +1576,8 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load @@ -1554,19 +1595,21 @@ local.get $3 local.get $1 i32.lt_u + local.set $2 + local.get $2 if local.get $3 i32.load - local.set $2 - local.get $2 - local.get $2 + local.set $4 + local.get $4 + local.get $4 i32.load offset=4 i32.const -2147483648 i32.const -1 i32.xor i32.and i32.store offset=4 - local.get $2 + local.get $4 call $~lib/rt/pure/collectWhite local.get $3 i32.const 4 @@ -1669,6 +1712,8 @@ local.get $1 i32.load local.set $3 + i32.const 1 + drop local.get $2 i32.const 15 i32.and @@ -1760,6 +1805,8 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) + i32.const 1 + drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1783,9 +1830,13 @@ if global.get $~lib/gc/gc.auto if + i32.const 1 + drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect + i32.const 1 + drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1802,6 +1853,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1821,6 +1874,8 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 + i32.const 1 + drop local.get $3 i32.eqz if @@ -1833,6 +1888,8 @@ end end end + i32.const 1 + drop local.get $3 i32.load i32.const -4 @@ -1861,6 +1918,8 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock + i32.const 1 + drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1885,6 +1944,7 @@ (local $6 i32) (local $7 i32) (local $8 i64) + (local $9 i32) block $~lib/util/memory/memset|inlined.0 local.get $0 local.set $5 @@ -1892,6 +1952,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.eqz if @@ -2103,13 +2165,13 @@ i64.shl i64.or local.set $8 - block $break|0 - loop $continue|0 - local.get $3 - i32.const 32 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $3 + i32.const 32 + i32.ge_u + local.set $9 + local.get $9 + if local.get $5 local.get $8 i64.store @@ -2136,9 +2198,8 @@ i32.const 32 i32.add local.set $5 - br $continue|0 + br $while-continue|0 end - unreachable end end ) @@ -2170,8 +2231,12 @@ i32.const 1 i32.add i32.store offset=4 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/onincrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -2228,39 +2293,41 @@ (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - i32.eqz - br_if $break|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if local.get $0 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $0 - local.get $5 + local.get $6 local.get $1 - local.tee $5 + local.tee $6 i32.const 1 i32.add local.set $1 - local.get $5 + local.get $6 i32.load8_u i32.store8 local.get $2 i32.const 1 i32.sub local.set $2 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 i32.const 3 @@ -2268,13 +2335,13 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 - local.get $2 - i32.const 16 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if local.get $0 local.get $1 i32.load @@ -2315,9 +2382,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|1 + br $while-continue|1 end - unreachable end local.get $2 i32.const 8 @@ -2474,13 +2540,13 @@ i32.const 3 i32.sub local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 1 i32.add @@ -2555,9 +2621,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|3 + br $while-continue|3 end - unreachable end br $break|2 end @@ -2596,13 +2661,13 @@ i32.const 2 i32.sub local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 2 i32.add @@ -2677,9 +2742,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|4 + br $while-continue|4 end - unreachable end br $break|2 end @@ -2704,13 +2768,13 @@ i32.const 1 i32.sub local.set $2 - block $break|5 - loop $continue|5 - local.get $2 - i32.const 19 - i32.ge_u - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if local.get $1 i32.const 3 i32.add @@ -2785,9 +2849,8 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|5 end - unreachable end br $break|2 end @@ -3257,6 +3320,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -3270,6 +3334,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -3303,13 +3369,13 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3320,30 +3386,29 @@ i32.sub local.set $3 local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end - unreachable end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $5 local.get $4 i64.load @@ -3360,37 +3425,35 @@ i32.const 8 i32.add local.set $4 - br $continue|1 + br $while-continue|1 end - unreachable end end - block $break|2 - loop $continue|2 - local.get $3 - i32.eqz - br_if $break|2 + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $5 - local.get $6 + local.get $7 local.get $4 - local.tee $6 + local.tee $7 i32.const 1 i32.add local.set $4 - local.get $6 + local.get $7 i32.load8_u i32.store8 local.get $3 i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end - unreachable end else local.get $4 @@ -3401,15 +3464,15 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - i32.eqz - br_if $break|3 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 i32.eqz if @@ -3426,17 +3489,16 @@ i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $3 - i32.const 8 - i32.ge_u - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if local.get $3 i32.const 8 i32.sub @@ -3449,16 +3511,15 @@ i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end - unreachable end end - block $break|5 - loop $continue|5 - local.get $3 - i32.eqz - br_if $break|5 + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if local.get $5 local.get $3 i32.const 1 @@ -3470,9 +3531,8 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end - unreachable end end end @@ -3534,6 +3594,8 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 1 + drop local.get $5 i32.const 16 i32.sub @@ -3544,6 +3606,8 @@ call $~lib/memory/memory.copy local.get $0 if + i32.const 1 + drop local.get $0 i32.const 16 i32.sub @@ -3592,8 +3656,12 @@ i32.const 268435455 i32.and local.set $2 + i32.const 1 + drop local.get $0 call $~lib/rt/rtrace/ondecrement + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3635,6 +3703,8 @@ i32.store offset=4 end else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u @@ -4829,16 +4899,20 @@ ) (func $~lib/util/sort/insertionSort (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) - (local $4 f64) - (local $5 i32) - (local $6 f64) + (local $4 i32) + (local $5 f64) + (local $6 i32) (local $7 i32) + (local $8 f64) + (local $9 i32) i32.const 0 local.set $3 loop $for-loop|0 local.get $3 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 @@ -4846,63 +4920,64 @@ i32.shl i32.add f64.load - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - block $break|1 - loop $continue|1 - local.get $5 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|1 - local.get $0 - local.get $5 - i32.const 3 - i32.shl - i32.add - f64.load - local.set $6 - i32.const 2 - global.set $~lib/argc - local.get $4 + local.set $6 + block $while-break|1 + loop $while-continue|1 local.get $6 - local.get $2 - call_indirect (type $f64_f64_=>_i32) i32.const 0 - i32.lt_s + i32.ge_s + local.set $7 + local.get $7 if local.get $0 - local.get $5 - local.tee $7 - i32.const 1 - i32.sub - local.set $5 - local.get $7 - i32.const 1 - i32.add + local.get $6 i32.const 3 i32.shl i32.add - local.get $6 - f64.store - else - br $break|1 + f64.load + local.set $8 + i32.const 2 + global.set $~lib/argc + local.get $5 + local.get $8 + local.get $2 + call_indirect (type $f64_f64_=>_i32) + i32.const 0 + i32.lt_s + if + local.get $0 + local.get $6 + local.tee $9 + i32.const 1 + i32.sub + local.set $6 + local.get $9 + i32.const 1 + i32.add + i32.const 3 + i32.shl + i32.add + local.get $8 + f64.store + else + br $while-break|1 + end + br $while-continue|1 end - br $continue|1 end - unreachable end local.get $0 - local.get $5 + local.get $6 i32.const 1 i32.add i32.const 3 i32.shl i32.add - local.get $4 + local.get $5 f64.store local.get $3 i32.const 1 @@ -4918,9 +4993,11 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) + (local $8 i32) (local $9 f64) (local $10 f64) + (local $11 i32) + (local $12 f64) local.get $1 i32.const 31 i32.add @@ -4945,63 +5022,64 @@ local.get $5 i32.const 0 i32.gt_s + local.set $6 + local.get $6 if local.get $5 - local.set $6 - block $break|1 - loop $continue|1 - local.get $6 - i32.const 1 - i32.and - local.get $4 - local.get $6 - i32.const 6 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load - local.get $6 - i32.const 1 - i32.shr_s - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.eq - i32.eqz - br_if $break|1 - local.get $6 + local.set $7 + loop $while-continue|1 + local.get $7 + i32.const 1 + i32.and + local.get $4 + local.get $7 + i32.const 6 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $7 + i32.const 1 + i32.shr_s + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.eq + local.set $8 + local.get $8 + if + local.get $7 i32.const 1 i32.shr_s - local.set $6 - br $continue|1 + local.set $7 + br $while-continue|1 end - unreachable end - local.get $6 + local.get $7 i32.const 1 i32.shr_s - local.set $7 + local.set $8 local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add f64.load - local.set $8 + local.set $9 local.get $0 local.get $5 i32.const 3 i32.shl i32.add f64.load - local.set $9 + local.set $10 i32.const 2 global.set $~lib/argc - local.get $8 local.get $9 + local.get $10 local.get $2 call_indirect (type $f64_f64_=>_i32) i32.const 0 @@ -5034,14 +5112,14 @@ i32.const 3 i32.shl i32.add - local.get $8 + local.get $9 f64.store local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store end local.get $5 @@ -5059,10 +5137,12 @@ local.get $5 i32.const 2 i32.ge_s + local.set $6 + local.get $6 if local.get $0 f64.load - local.set $9 + local.set $10 local.get $0 local.get $0 local.get $5 @@ -5076,76 +5156,75 @@ i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store i32.const 1 - local.set $7 - block $break|3 - loop $continue|3 - local.get $7 - i32.const 1 - i32.shl - local.get $4 - local.get $7 - i32.const 5 - i32.shr_s - i32.const 2 - i32.shl - i32.add - i32.load + local.set $8 + loop $while-continue|3 + local.get $8 + i32.const 1 + i32.shl + local.get $4 + local.get $8 + i32.const 5 + i32.shr_s + i32.const 2 + i32.shl + i32.add + i32.load + local.get $8 + i32.const 31 + i32.and + i32.shr_u + i32.const 1 + i32.and + i32.add + local.tee $7 + local.get $5 + i32.lt_s + local.set $11 + local.get $11 + if local.get $7 - i32.const 31 - i32.and - i32.shr_u - i32.const 1 - i32.and - i32.add - local.tee $6 - local.get $5 - i32.lt_s - i32.eqz - br_if $break|3 - local.get $6 - local.set $7 - br $continue|3 + local.set $8 + br $while-continue|3 end - unreachable end - block $break|4 - loop $continue|4 - local.get $7 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|4 + loop $while-continue|4 + local.get $8 + i32.const 0 + i32.gt_s + local.set $11 + local.get $11 + if local.get $0 f64.load - local.set $9 + local.set $10 local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add f64.load - local.set $8 + local.set $9 i32.const 2 global.set $~lib/argc + local.get $10 local.get $9 - local.get $8 local.get $2 call_indirect (type $f64_f64_=>_i32) i32.const 0 i32.lt_s if local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 i32.shl i32.add local.get $4 - local.get $7 + local.get $8 i32.const 5 i32.shr_s i32.const 2 @@ -5153,30 +5232,29 @@ i32.add i32.load i32.const 1 - local.get $7 + local.get $8 i32.const 31 i32.and i32.shl i32.xor i32.store local.get $0 - local.get $7 + local.get $8 i32.const 3 i32.shl i32.add - local.get $9 + local.get $10 f64.store local.get $0 - local.get $8 + local.get $9 f64.store end - local.get $7 + local.get $8 i32.const 1 i32.shr_s - local.set $7 - br $continue|4 + local.set $8 + br $while-continue|4 end - unreachable end local.get $5 i32.const 1 @@ -5189,13 +5267,13 @@ call $~lib/rt/tlsf/__free local.get $0 f64.load offset=8 - local.set $10 + local.set $12 local.get $0 local.get $0 f64.load f64.store offset=8 local.get $0 - local.get $10 + local.get $12 f64.store ) (func $~lib/typedarray/Float64Array#sort (; 65 ;) (param $0 i32) (param $1 i32) (result i32) @@ -5270,6 +5348,8 @@ local.set $9 local.get $2 local.set $8 + i32.const 0 + drop local.get $9 i32.const 256 i32.lt_s @@ -5330,6 +5410,12 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop i32.const 1 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -5507,6 +5593,8 @@ select end local.set $4 + i32.const 1 + drop local.get $5 local.get $4 i32.lt_s @@ -5610,12 +5698,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/typedarray/isInt8ArrayEqual (; 78 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -5646,6 +5737,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $2 @@ -5656,12 +5749,12 @@ i32.ne if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $2 @@ -5860,10 +5953,14 @@ select end local.set $4 + i32.const 0 + drop loop $for-loop|0 local.get $5 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $5 @@ -5912,12 +6009,15 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 + i32.const 0 + drop local.get $2 ) (func $std/typedarray/isInt32ArrayEqual (; 84 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) + (local $5 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -5948,6 +6048,8 @@ local.get $2 local.get $3 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $2 @@ -5958,12 +6060,12 @@ i32.ne if i32.const 0 - local.set $4 + local.set $5 local.get $0 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $5 return end local.get $2 @@ -6246,6 +6348,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6265,6 +6368,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -6381,6 +6486,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6400,6 +6506,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -6494,6 +6602,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6513,6 +6622,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -6631,6 +6742,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6650,6 +6762,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -6770,6 +6884,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6789,6 +6904,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -6883,6 +7000,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -6902,6 +7020,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7018,6 +7138,7 @@ (local $6 i32) (local $7 i32) (local $8 i32) + (local $9 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7037,6 +7158,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7153,7 +7276,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) + (local $10 i64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7173,6 +7297,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7196,10 +7322,10 @@ end end local.get $3 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 ) (func $std/typedarray/testReduce<~lib/typedarray/Int64Array,i64> (; 115 ;) (local $0 i32) @@ -7289,7 +7415,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 i64) + (local $9 i32) + (local $10 i64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7309,6 +7436,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7332,10 +7461,10 @@ end end local.get $3 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 ) (func $std/typedarray/testReduce<~lib/typedarray/Uint64Array,u64> (; 119 ;) (local $0 i32) @@ -7425,7 +7554,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f32) + (local $9 i32) + (local $10 f32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7445,6 +7575,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7468,10 +7600,10 @@ end end local.get $3 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 ) (func $std/typedarray/testReduce<~lib/typedarray/Float32Array,f32> (; 123 ;) (local $0 i32) @@ -7537,7 +7669,8 @@ (local $6 i32) (local $7 i32) (local $8 i32) - (local $9 f64) + (local $9 i32) + (local $10 f64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7557,6 +7690,8 @@ local.get $7 local.get $8 i32.lt_s + local.set $9 + local.get $9 if i32.const 4 global.set $~lib/argc @@ -7580,10 +7715,10 @@ end end local.get $3 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 ) (func $std/typedarray/testReduce<~lib/typedarray/Float64Array,f64> (; 126 ;) (local $0 i32) @@ -7648,6 +7783,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7667,6 +7803,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -7762,6 +7900,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7781,6 +7920,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -7874,6 +8015,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -7893,6 +8035,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -7986,6 +8130,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8005,6 +8150,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8100,6 +8247,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8119,6 +8267,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8212,6 +8362,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8231,6 +8382,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8322,6 +8475,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8341,6 +8495,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8432,7 +8588,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) + (local $9 i64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8452,6 +8609,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8475,10 +8634,10 @@ end end local.get $3 - local.set $8 + local.set $9 local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $9 ) (func $std/typedarray/testReduceRight<~lib/typedarray/Int64Array,i64> (; 150 ;) (local $0 i32) @@ -8543,7 +8702,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) + (local $9 i64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8563,6 +8723,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8586,10 +8748,10 @@ end end local.get $3 - local.set $8 + local.set $9 local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $9 ) (func $std/typedarray/testReduceRight<~lib/typedarray/Uint64Array,u64> (; 153 ;) (local $0 i32) @@ -8654,7 +8816,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f32) + (local $8 i32) + (local $9 f32) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8674,6 +8837,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8697,10 +8862,10 @@ end end local.get $3 - local.set $8 + local.set $9 local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $9 ) (func $std/typedarray/testReduceRight<~lib/typedarray/Float32Array,f32> (; 156 ;) (local $0 i32) @@ -8765,7 +8930,8 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 f64) + (local $8 i32) + (local $9 f64) local.get $0 call $~lib/rt/pure/__retain local.set $5 @@ -8785,6 +8951,8 @@ local.get $7 i32.const 0 i32.ge_s + local.set $8 + local.get $8 if i32.const 4 global.set $~lib/argc @@ -8808,10 +8976,10 @@ end end local.get $3 - local.set $8 + local.set $9 local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $9 ) (func $std/typedarray/testReduceRight<~lib/typedarray/Float64Array,f64> (; 159 ;) (local $0 i32) @@ -8879,6 +9047,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -8908,6 +9077,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9048,6 +9219,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9077,6 +9249,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9236,6 +9410,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9265,6 +9440,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9405,6 +9582,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9434,6 +9612,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9597,6 +9777,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9626,6 +9807,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9789,6 +9972,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9818,6 +10002,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -9958,6 +10144,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -9987,6 +10174,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -10150,6 +10339,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -10179,6 +10369,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -10342,6 +10534,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -10371,6 +10564,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -10534,6 +10729,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -10563,6 +10759,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -10726,6 +10924,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -10755,6 +10954,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $8 local.get $9 @@ -10903,6 +11104,8 @@ local.get $1 i32.load local.set $4 + i32.const 1 + drop local.get $4 i32.const 1 i32.and @@ -11028,6 +11231,8 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock + i32.const 1 + drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -11074,6 +11279,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -11103,6 +11309,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -11110,10 +11318,10 @@ i32.shl i32.add i32.load8_s - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -11121,15 +11329,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.store8 end local.get $9 @@ -11299,6 +11507,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -11328,6 +11537,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -11335,10 +11546,10 @@ i32.shl i32.add i32.load8_u - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -11346,15 +11557,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.store8 end local.get $9 @@ -11524,6 +11735,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -11553,6 +11765,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -11560,10 +11774,10 @@ i32.shl i32.add i32.load8_u - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -11571,15 +11785,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.store8 end local.get $9 @@ -11751,6 +11965,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -11780,6 +11995,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -11787,10 +12004,10 @@ i32.shl i32.add i32.load16_s - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -11798,15 +12015,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add - local.get $10 + local.get $11 i32.store16 end local.get $9 @@ -11976,6 +12193,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -12005,6 +12223,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -12012,10 +12232,10 @@ i32.shl i32.add i32.load16_u - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -12023,15 +12243,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 1 i32.shl i32.add - local.get $10 + local.get $11 i32.store16 end local.get $9 @@ -12199,6 +12419,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -12228,6 +12449,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -12235,10 +12458,10 @@ i32.shl i32.add i32.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -12246,15 +12469,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add - local.get $10 + local.get $11 i32.store end local.get $9 @@ -12422,6 +12645,7 @@ (local $9 i32) (local $10 i32) (local $11 i32) + (local $12 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -12451,6 +12675,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -12458,10 +12684,10 @@ i32.shl i32.add i32.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -12469,15 +12695,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add - local.get $10 + local.get $11 i32.store end local.get $9 @@ -12643,8 +12869,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i32) local.get $0 call $~lib/rt/pure/__retain @@ -12675,6 +12901,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -12682,10 +12910,10 @@ i32.shl i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -12693,15 +12921,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add - local.get $10 + local.get $11 i64.store end local.get $9 @@ -12718,16 +12946,16 @@ local.get $6 local.get $9 call $~lib/rt/tlsf/__realloc - local.set $11 + local.set $10 local.get $5 - local.get $11 + local.get $10 call $~lib/rt/pure/__retain i32.store local.get $5 local.get $9 i32.store offset=8 local.get $5 - local.get $11 + local.get $10 i32.store offset=4 local.get $5 call $~lib/rt/pure/__retain @@ -12867,8 +13095,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) - (local $11 i32) + (local $10 i32) + (local $11 i64) (local $12 i32) local.get $0 call $~lib/rt/pure/__retain @@ -12899,6 +13127,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -12906,10 +13136,10 @@ i32.shl i32.add i64.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -12917,15 +13147,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add - local.get $10 + local.get $11 i64.store end local.get $9 @@ -12942,16 +13172,16 @@ local.get $6 local.get $9 call $~lib/rt/tlsf/__realloc - local.set $11 + local.set $10 local.get $5 - local.get $11 + local.get $10 call $~lib/rt/pure/__retain i32.store local.get $5 local.get $9 i32.store offset=8 local.get $5 - local.get $11 + local.get $10 i32.store offset=4 local.get $5 call $~lib/rt/pure/__retain @@ -13091,8 +13321,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) - (local $11 i32) + (local $10 i32) + (local $11 f32) (local $12 i32) local.get $0 call $~lib/rt/pure/__retain @@ -13123,6 +13353,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -13130,10 +13362,10 @@ i32.shl i32.add f32.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -13141,15 +13373,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add - local.get $10 + local.get $11 f32.store end local.get $9 @@ -13166,16 +13398,16 @@ local.get $6 local.get $9 call $~lib/rt/tlsf/__realloc - local.set $11 + local.set $10 local.get $5 - local.get $11 + local.get $10 call $~lib/rt/pure/__retain i32.store local.get $5 local.get $9 i32.store offset=8 local.get $5 - local.get $11 + local.get $10 i32.store offset=4 local.get $5 call $~lib/rt/pure/__retain @@ -13315,8 +13547,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) - (local $11 i32) + (local $10 i32) + (local $11 f64) (local $12 i32) local.get $0 call $~lib/rt/pure/__retain @@ -13347,6 +13579,8 @@ local.get $9 local.get $4 i32.lt_s + local.set $10 + local.get $10 if local.get $7 local.get $9 @@ -13354,10 +13588,10 @@ i32.shl i32.add f64.load - local.set $10 + local.set $11 i32.const 3 global.set $~lib/argc - local.get $10 + local.get $11 local.get $9 local.get $3 local.get $2 @@ -13365,15 +13599,15 @@ if local.get $6 local.get $8 - local.tee $11 + local.tee $12 i32.const 1 i32.add local.set $8 - local.get $11 + local.get $12 i32.const 3 i32.shl i32.add - local.get $10 + local.get $11 f64.store end local.get $9 @@ -13390,16 +13624,16 @@ local.get $6 local.get $9 call $~lib/rt/tlsf/__realloc - local.set $11 + local.set $10 local.get $5 - local.get $11 + local.get $10 call $~lib/rt/pure/__retain i32.store local.get $5 local.get $9 i32.store offset=8 local.get $5 - local.get $11 + local.get $10 i32.store offset=4 local.get $5 call $~lib/rt/pure/__retain @@ -13541,6 +13775,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -13559,6 +13794,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -13574,10 +13811,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -13692,6 +13929,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -13710,6 +13948,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -13725,10 +13965,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -13841,6 +14081,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -13859,6 +14100,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -13874,10 +14117,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -13992,6 +14235,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14010,6 +14254,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14025,10 +14271,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -14143,6 +14389,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14161,6 +14408,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14176,10 +14425,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -14290,6 +14539,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14308,6 +14558,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14323,10 +14575,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -14435,6 +14687,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14453,6 +14706,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14468,10 +14723,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -14580,6 +14835,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14598,6 +14854,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14613,10 +14871,10 @@ call_indirect (type $i64_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -14725,6 +14983,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14743,6 +15002,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14758,10 +15019,10 @@ call_indirect (type $i64_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -14870,6 +15131,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -14888,6 +15150,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -14903,10 +15167,10 @@ call_indirect (type $f32_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -15015,6 +15279,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15033,6 +15298,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15048,10 +15315,10 @@ call_indirect (type $f64_i32_i32_=>_i32) if i32.const 1 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/SOME<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -15164,6 +15431,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15182,6 +15450,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15197,10 +15467,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -15316,6 +15586,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15334,6 +15605,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15349,10 +15622,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -15466,6 +15739,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15484,6 +15758,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15499,10 +15775,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -15618,6 +15894,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15636,6 +15913,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15651,10 +15930,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -15770,6 +16049,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15788,6 +16068,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15803,10 +16085,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -15918,6 +16200,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -15936,6 +16219,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -15951,10 +16236,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -16064,6 +16349,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16082,6 +16368,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -16097,10 +16385,10 @@ call_indirect (type $i32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -16210,6 +16498,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16228,6 +16517,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -16243,10 +16534,10 @@ call_indirect (type $i64_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -16356,6 +16647,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16374,6 +16666,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -16389,10 +16683,10 @@ call_indirect (type $i64_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -16502,6 +16796,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16520,6 +16815,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -16535,10 +16832,10 @@ call_indirect (type $f32_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -16648,6 +16945,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16666,6 +16964,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -16681,10 +16981,10 @@ call_indirect (type $f64_i32_i32_=>_i32) if local.get $5 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/FIND_INDEX<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -16800,6 +17100,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16818,6 +17119,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -16836,10 +17139,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $5 @@ -16956,6 +17259,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -16974,6 +17278,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -16992,10 +17298,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $5 @@ -17110,6 +17416,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17128,6 +17435,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17146,10 +17455,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $5 @@ -17266,6 +17575,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17284,6 +17594,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17302,10 +17614,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $5 @@ -17422,6 +17734,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17440,6 +17753,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17458,10 +17773,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $5 @@ -17574,6 +17889,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17592,6 +17908,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17610,10 +17928,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $5 @@ -17724,6 +18042,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17742,6 +18061,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17760,10 +18081,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $5 @@ -17874,6 +18195,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -17892,6 +18214,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -17910,10 +18234,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $5 @@ -18024,6 +18348,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -18042,6 +18367,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -18060,10 +18387,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $5 @@ -18162,6 +18489,7 @@ (local $8 f32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $0 i32.reinterpret_f32 local.set $2 @@ -18299,13 +18627,13 @@ i32.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i32.ge_u @@ -18332,9 +18660,8 @@ i32.const 1 i32.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -18358,13 +18685,13 @@ i32.const 8 i32.shl i32.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i32.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i32.shl local.set $2 local.get $4 @@ -18422,6 +18749,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -18440,6 +18768,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -18458,10 +18788,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $5 @@ -18559,7 +18889,8 @@ (local $7 i64) (local $8 f64) (local $9 i64) - (local $10 i64) + (local $10 i32) + (local $11 i64) local.get $0 i64.reinterpret_f64 local.set $2 @@ -18701,13 +19032,13 @@ i64.or local.set $3 end - block $break|0 - loop $continue|0 - local.get $4 - local.get $5 - i64.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i64.gt_s + local.set $10 + local.get $10 + if local.get $2 local.get $3 i64.ge_u @@ -18734,9 +19065,8 @@ i64.const 1 i64.sub local.set $4 - br $continue|0 + br $while-continue|0 end - unreachable end local.get $2 local.get $3 @@ -18760,13 +19090,13 @@ i64.const 11 i64.shl i64.clz - local.set $10 + local.set $11 local.get $4 - local.get $10 + local.get $11 i64.sub local.set $4 local.get $2 - local.get $10 + local.get $11 i64.shl local.set $2 local.get $4 @@ -18826,6 +19156,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) block $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -18844,6 +19175,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if block $for-continue|0 i32.const 3 @@ -18862,10 +19195,10 @@ br $for-continue|0 end i32.const 0 - local.set $7 + local.set $8 local.get $3 call $~lib/rt/pure/__release - local.get $7 + local.get $8 br $~lib/typedarray/EVERY<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $5 @@ -19020,6 +19353,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19037,6 +19371,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19185,6 +19521,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19202,6 +19539,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19344,6 +19683,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19361,6 +19701,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19507,6 +19849,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19524,6 +19867,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19672,6 +20017,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19689,6 +20035,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19827,6 +20175,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19844,6 +20193,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -19976,6 +20327,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -19993,6 +20345,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -20126,6 +20480,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -20143,6 +20498,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -20279,6 +20636,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -20296,6 +20654,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -20432,6 +20792,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -20449,6 +20810,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -20585,6 +20948,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) local.get $0 call $~lib/rt/pure/__retain local.set $3 @@ -20602,6 +20966,8 @@ local.get $5 local.get $6 i32.lt_s + local.set $7 + local.get $7 if i32.const 3 global.set $~lib/argc @@ -20687,6 +21053,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -20704,28 +21071,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 0 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 0 i32.shl i32.add - local.set $6 - local.get $5 - i32.load8_s local.set $7 - local.get $5 local.get $6 i32.load8_s - i32.store8 + local.set $8 local.get $6 local.get $7 + i32.load8_s + i32.store8 + local.get $7 + local.get $8 i32.store8 local.get $3 i32.const 1 @@ -20749,6 +21118,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -20773,6 +21143,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -20810,6 +21182,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -20848,8 +21222,8 @@ call $~lib/typedarray/Int8Array#subarray local.tee $6 call $~lib/typedarray/Int8Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Int8Array#__get i32.const 8 @@ -20863,7 +21237,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Int8Array#__get i32.const 7 @@ -20877,7 +21251,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Int8Array#__get i32.const 6 @@ -20891,7 +21265,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Int8Array#__get i32.const 5 @@ -20917,7 +21291,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array#reverse (; 404 ;) (param $0 i32) (result i32) @@ -20928,6 +21302,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -20945,28 +21320,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 0 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 0 i32.shl i32.add - local.set $6 - local.get $5 - i32.load8_u local.set $7 - local.get $5 local.get $6 i32.load8_u - i32.store8 + local.set $8 local.get $6 local.get $7 + i32.load8_u + i32.store8 + local.get $7 + local.get $8 i32.store8 local.get $3 i32.const 1 @@ -21097,6 +21474,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -21121,6 +21499,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21154,6 +21534,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21190,8 +21572,8 @@ call $~lib/typedarray/Uint8Array#subarray local.tee $6 call $~lib/typedarray/Uint8Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8Array#__get i32.const 8 @@ -21205,7 +21587,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8Array#__get i32.const 7 @@ -21219,7 +21601,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8Array#__get i32.const 6 @@ -21233,7 +21615,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Uint8Array#__get i32.const 5 @@ -21259,7 +21641,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray#reverse (; 407 ;) (param $0 i32) (result i32) @@ -21270,6 +21652,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -21287,28 +21670,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 0 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 0 i32.shl i32.add - local.set $6 - local.get $5 - i32.load8_u local.set $7 - local.get $5 local.get $6 i32.load8_u - i32.store8 + local.set $8 local.get $6 local.get $7 + i32.load8_u + i32.store8 + local.get $7 + local.get $8 i32.store8 local.get $3 i32.const 1 @@ -21439,6 +21824,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -21463,6 +21849,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21496,6 +21884,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21532,8 +21922,8 @@ call $~lib/typedarray/Uint8ClampedArray#subarray local.tee $6 call $~lib/typedarray/Uint8ClampedArray#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 8 @@ -21547,7 +21937,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 7 @@ -21561,7 +21951,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 6 @@ -21575,7 +21965,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Uint8ClampedArray#__get i32.const 5 @@ -21601,7 +21991,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#reverse (; 410 ;) (param $0 i32) (result i32) @@ -21612,6 +22002,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -21629,28 +22020,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 1 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 1 i32.shl i32.add - local.set $6 - local.get $5 - i32.load16_s local.set $7 - local.get $5 local.get $6 i32.load16_s - i32.store16 + local.set $8 local.get $6 local.get $7 + i32.load16_s + i32.store16 + local.get $7 + local.get $8 i32.store16 local.get $3 i32.const 1 @@ -21781,6 +22174,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -21805,6 +22199,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21842,6 +22238,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -21880,8 +22278,8 @@ call $~lib/typedarray/Int16Array#subarray local.tee $6 call $~lib/typedarray/Int16Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Int16Array#__get i32.const 8 @@ -21895,7 +22293,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Int16Array#__get i32.const 7 @@ -21909,7 +22307,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Int16Array#__get i32.const 6 @@ -21923,7 +22321,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Int16Array#__get i32.const 5 @@ -21949,7 +22347,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array#reverse (; 413 ;) (param $0 i32) (result i32) @@ -21960,6 +22358,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -21977,28 +22376,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 1 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 1 i32.shl i32.add - local.set $6 - local.get $5 - i32.load16_u local.set $7 - local.get $5 local.get $6 i32.load16_u - i32.store16 + local.set $8 local.get $6 local.get $7 + i32.load16_u + i32.store16 + local.get $7 + local.get $8 i32.store16 local.get $3 i32.const 1 @@ -22129,6 +22530,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -22153,6 +22555,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22186,6 +22590,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22222,8 +22628,8 @@ call $~lib/typedarray/Uint16Array#subarray local.tee $6 call $~lib/typedarray/Uint16Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Uint16Array#__get i32.const 8 @@ -22237,7 +22643,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Uint16Array#__get i32.const 7 @@ -22251,7 +22657,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Uint16Array#__get i32.const 6 @@ -22265,7 +22671,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Uint16Array#__get i32.const 5 @@ -22291,7 +22697,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array#reverse (; 416 ;) (param $0 i32) (result i32) @@ -22302,6 +22708,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -22319,28 +22726,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 2 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 2 i32.shl i32.add - local.set $6 - local.get $5 - i32.load local.set $7 - local.get $5 local.get $6 i32.load - i32.store + local.set $8 local.get $6 local.get $7 + i32.load + i32.store + local.get $7 + local.get $8 i32.store local.get $3 i32.const 1 @@ -22364,6 +22773,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -22388,6 +22798,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22417,6 +22829,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22451,8 +22865,8 @@ call $~lib/typedarray/Int32Array#subarray local.tee $6 call $~lib/typedarray/Int32Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Int32Array#__get i32.const 8 @@ -22466,7 +22880,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Int32Array#__get i32.const 7 @@ -22480,7 +22894,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Int32Array#__get i32.const 6 @@ -22494,7 +22908,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Int32Array#__get i32.const 5 @@ -22520,7 +22934,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array#reverse (; 418 ;) (param $0 i32) (result i32) @@ -22531,6 +22945,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -22548,28 +22963,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 2 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 2 i32.shl i32.add - local.set $6 - local.get $5 - i32.load local.set $7 - local.get $5 local.get $6 i32.load - i32.store + local.set $8 local.get $6 local.get $7 + i32.load + i32.store + local.get $7 + local.get $8 i32.store local.get $3 i32.const 1 @@ -22700,6 +23117,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -22724,6 +23142,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22753,6 +23173,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -22787,8 +23209,8 @@ call $~lib/typedarray/Uint32Array#subarray local.tee $6 call $~lib/typedarray/Uint32Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Uint32Array#__get i32.const 8 @@ -22802,7 +23224,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Uint32Array#__get i32.const 7 @@ -22816,7 +23238,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Uint32Array#__get i32.const 6 @@ -22830,7 +23252,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Uint32Array#__get i32.const 5 @@ -22856,7 +23278,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#reverse (; 421 ;) (param $0 i32) (result i32) @@ -22866,7 +23288,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) + (local $8 i64) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -22884,28 +23307,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 3 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 3 i32.shl i32.add - local.set $6 - local.get $5 - i64.load local.set $7 - local.get $5 local.get $6 i64.load - i64.store + local.set $8 local.get $6 local.get $7 + i64.load + i64.store + local.get $7 + local.get $8 i64.store local.get $3 i32.const 1 @@ -23036,6 +23461,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -23060,6 +23486,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23091,6 +23519,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23126,8 +23556,8 @@ call $~lib/typedarray/Int64Array#subarray local.tee $6 call $~lib/typedarray/Int64Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Int64Array#__get i64.const 8 @@ -23141,7 +23571,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Int64Array#__get i64.const 7 @@ -23155,7 +23585,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Int64Array#__get i64.const 6 @@ -23169,7 +23599,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Int64Array#__get i64.const 5 @@ -23195,7 +23625,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array#reverse (; 424 ;) (param $0 i32) (result i32) @@ -23205,7 +23635,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 i64) + (local $7 i32) + (local $8 i64) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -23223,28 +23654,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 3 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 3 i32.shl i32.add - local.set $6 - local.get $5 - i64.load local.set $7 - local.get $5 local.get $6 i64.load - i64.store + local.set $8 local.get $6 local.get $7 + i64.load + i64.store + local.get $7 + local.get $8 i64.store local.get $3 i32.const 1 @@ -23375,6 +23808,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -23399,6 +23833,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23430,6 +23866,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23465,8 +23903,8 @@ call $~lib/typedarray/Uint64Array#subarray local.tee $6 call $~lib/typedarray/Uint64Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Uint64Array#__get i64.const 8 @@ -23480,7 +23918,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Uint64Array#__get i64.const 7 @@ -23494,7 +23932,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Uint64Array#__get i64.const 6 @@ -23508,7 +23946,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Uint64Array#__get i64.const 5 @@ -23534,7 +23972,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float32Array#reverse (; 427 ;) (param $0 i32) (result i32) @@ -23544,7 +23982,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f32) + (local $7 i32) + (local $8 f32) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -23562,28 +24001,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 2 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 2 i32.shl i32.add - local.set $6 - local.get $5 - f32.load local.set $7 - local.get $5 local.get $6 f32.load - f32.store + local.set $8 local.get $6 local.get $7 + f32.load + f32.store + local.get $7 + local.get $8 f32.store local.get $3 i32.const 1 @@ -23714,6 +24155,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -23738,6 +24180,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23769,6 +24213,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -23804,8 +24250,8 @@ call $~lib/typedarray/Float32Array#subarray local.tee $6 call $~lib/typedarray/Float32Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Float32Array#__get f32.const 8 @@ -23819,7 +24265,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Float32Array#__get f32.const 7 @@ -23833,7 +24279,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Float32Array#__get f32.const 6 @@ -23847,7 +24293,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Float32Array#__get f32.const 5 @@ -23873,7 +24319,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float64Array#reverse (; 430 ;) (param $0 i32) (result i32) @@ -23883,7 +24329,8 @@ (local $4 i32) (local $5 i32) (local $6 i32) - (local $7 f64) + (local $7 i32) + (local $8 f64) local.get $0 call $~lib/rt/pure/__retain local.set $1 @@ -23901,28 +24348,30 @@ local.get $3 local.get $4 i32.lt_u + local.set $5 + local.get $5 if local.get $2 local.get $3 i32.const 3 i32.shl i32.add - local.set $5 + local.set $6 local.get $2 local.get $4 i32.const 3 i32.shl i32.add - local.set $6 - local.get $5 - f64.load local.set $7 - local.get $5 local.get $6 f64.load - f64.store + local.set $8 local.get $6 local.get $7 + f64.load + f64.store + local.get $7 + local.get $8 f64.store local.get $3 i32.const 1 @@ -23946,6 +24395,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) global.get $std/typedarray/testArrayReverseValues call $~lib/rt/pure/__retain local.set $0 @@ -23970,6 +24420,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -24001,6 +24453,8 @@ local.get $6 local.get $1 i32.lt_s + local.set $7 + local.get $7 if local.get $3 local.get $6 @@ -24036,8 +24490,8 @@ call $~lib/typedarray/Float64Array#subarray local.tee $6 call $~lib/typedarray/Float64Array#reverse - local.set $7 - local.get $7 + local.set $8 + local.get $8 i32.const 0 call $~lib/typedarray/Float64Array#__get f64.const 8 @@ -24051,7 +24505,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 1 call $~lib/typedarray/Float64Array#__get f64.const 7 @@ -24065,7 +24519,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 2 call $~lib/typedarray/Float64Array#__get f64.const 6 @@ -24079,7 +24533,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $8 i32.const 3 call $~lib/typedarray/Float64Array#__get f64.const 5 @@ -24105,7 +24559,7 @@ call $~lib/rt/pure/__release local.get $5 call $~lib/rt/pure/__release - local.get $7 + local.get $8 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#indexOf (; 432 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -24116,6 +24570,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -24166,13 +24621,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -24187,19 +24642,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -24216,6 +24670,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -24262,13 +24717,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -24283,19 +24738,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int8Array,i8>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -24331,6 +24785,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -24349,6 +24804,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -24664,8 +25121,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int8Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24680,7 +25137,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24695,7 +25152,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24710,7 +25167,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24725,7 +25182,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24740,7 +25197,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Int8Array#indexOf @@ -24755,7 +25212,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Int8Array#indexOf @@ -24770,7 +25227,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Int8Array#indexOf @@ -24791,7 +25248,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array#indexOf (; 436 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -24802,6 +25259,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -24852,13 +25310,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -24871,19 +25329,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -24900,6 +25357,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -24946,13 +25404,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -24965,19 +25423,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8Array,u8>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -25013,6 +25470,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -25031,6 +25489,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -25344,8 +25804,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Uint8Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25360,7 +25820,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25375,7 +25835,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25390,7 +25850,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25405,7 +25865,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25420,7 +25880,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Uint8Array#indexOf @@ -25435,7 +25895,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Uint8Array#indexOf @@ -25450,7 +25910,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Uint8Array#indexOf @@ -25471,7 +25931,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray#indexOf (; 440 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -25482,6 +25942,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -25532,13 +25993,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -25551,19 +26012,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -25580,6 +26040,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -25626,13 +26087,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 0 @@ -25645,19 +26106,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint8ClampedArray,u8>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -25693,6 +26153,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -25711,6 +26172,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -26024,8 +26487,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Uint8ClampedArray#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26040,7 +26503,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26055,7 +26518,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26070,7 +26533,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26085,7 +26548,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26100,7 +26563,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26115,7 +26578,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26130,7 +26593,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Uint8ClampedArray#indexOf @@ -26151,7 +26614,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array#indexOf (; 444 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -26162,6 +26625,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -26212,13 +26676,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 1 @@ -26233,19 +26697,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -26262,6 +26725,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -26308,13 +26772,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 1 @@ -26329,19 +26793,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int16Array,i16>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -26377,6 +26840,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -26395,6 +26859,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -26710,8 +27176,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int16Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26726,7 +27192,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26741,7 +27207,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26756,7 +27222,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26771,7 +27237,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26786,7 +27252,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Int16Array#indexOf @@ -26801,7 +27267,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Int16Array#indexOf @@ -26816,7 +27282,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Int16Array#indexOf @@ -26837,7 +27303,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array#indexOf (; 448 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -26848,6 +27314,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -26898,13 +27365,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 1 @@ -26917,19 +27384,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -26946,6 +27412,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -26992,13 +27459,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 1 @@ -27011,19 +27478,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint16Array,u16>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -27059,6 +27525,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -27077,6 +27544,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -27390,8 +27859,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Uint16Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27406,7 +27875,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27421,7 +27890,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27436,7 +27905,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27451,7 +27920,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27466,7 +27935,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Uint16Array#indexOf @@ -27481,7 +27950,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Uint16Array#indexOf @@ -27496,7 +27965,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Uint16Array#indexOf @@ -27517,7 +27986,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array#indexOf (; 452 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -27528,6 +27997,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -27578,13 +28048,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -27595,19 +28065,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -27624,6 +28093,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -27670,13 +28140,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -27687,19 +28157,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int32Array,i32>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -27735,6 +28204,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -27753,6 +28223,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -28064,8 +28536,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int32Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28080,7 +28552,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28095,7 +28567,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28110,7 +28582,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28125,7 +28597,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28140,7 +28612,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Int32Array#indexOf @@ -28155,7 +28627,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Int32Array#indexOf @@ -28170,7 +28642,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Int32Array#indexOf @@ -28191,7 +28663,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array#indexOf (; 456 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -28202,6 +28674,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -28252,13 +28725,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -28269,19 +28742,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -28298,6 +28770,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -28344,13 +28817,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -28361,19 +28834,18 @@ i32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint32Array,u32>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -28409,6 +28881,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -28427,6 +28900,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -28738,8 +29213,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Uint32Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i32.const 3 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28754,7 +29229,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 4 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28769,7 +29244,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28784,7 +29259,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 9 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28799,7 +29274,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 10 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28814,7 +29289,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 11 i32.const 0 call $~lib/typedarray/Uint32Array#indexOf @@ -28829,7 +29304,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 1 call $~lib/typedarray/Uint32Array#indexOf @@ -28844,7 +29319,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i32.const 5 i32.const 2 call $~lib/typedarray/Uint32Array#indexOf @@ -28865,7 +29340,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array#indexOf (; 460 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -28876,6 +29351,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -28926,13 +29402,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -28943,19 +29419,18 @@ i64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -28972,6 +29447,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -29018,13 +29494,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -29035,19 +29511,18 @@ i64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Int64Array,i64>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -29083,6 +29558,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -29101,6 +29577,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -29413,8 +29891,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Int64Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i64.const 3 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29429,7 +29907,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 4 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29444,7 +29922,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29459,7 +29937,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 9 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29474,7 +29952,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 10 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29489,7 +29967,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 11 i32.const 0 call $~lib/typedarray/Int64Array#indexOf @@ -29504,7 +29982,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 1 call $~lib/typedarray/Int64Array#indexOf @@ -29519,7 +29997,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 2 call $~lib/typedarray/Int64Array#indexOf @@ -29540,7 +30018,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array#indexOf (; 464 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -29551,6 +30029,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -29601,13 +30080,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -29618,19 +30097,18 @@ i64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -29647,6 +30125,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -29693,13 +30172,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -29710,19 +30189,18 @@ i64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Uint64Array,u64>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -29758,6 +30236,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -29776,6 +30255,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -30088,8 +30569,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Uint64Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 i64.const 3 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30104,7 +30585,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 4 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30119,7 +30600,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30134,7 +30615,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 9 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30149,7 +30630,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 10 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30164,7 +30645,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 11 i32.const 0 call $~lib/typedarray/Uint64Array#indexOf @@ -30179,7 +30660,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 1 call $~lib/typedarray/Uint64Array#indexOf @@ -30194,7 +30675,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 i64.const 5 i32.const 2 call $~lib/typedarray/Uint64Array#indexOf @@ -30215,7 +30696,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float32Array#indexOf (; 468 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) @@ -30226,6 +30707,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -30276,13 +30758,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -30293,19 +30775,18 @@ f32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -30322,6 +30803,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -30368,13 +30850,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -30385,19 +30867,18 @@ f32.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -30433,6 +30914,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -30451,6 +30933,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -30763,8 +31247,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Float32Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 f32.const 3 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30779,7 +31263,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 4 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30794,7 +31278,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 5 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30809,7 +31293,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 9 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30824,7 +31308,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 10 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30839,7 +31323,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 11 i32.const 0 call $~lib/typedarray/Float32Array#indexOf @@ -30854,7 +31338,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 5 i32.const 1 call $~lib/typedarray/Float32Array#indexOf @@ -30869,7 +31353,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f32.const 5 i32.const 2 call $~lib/typedarray/Float32Array#indexOf @@ -30890,7 +31374,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float64Array#indexOf (; 472 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) @@ -30901,6 +31385,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -30951,13 +31436,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -30968,19 +31453,18 @@ f64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -30997,6 +31481,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) block $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -31043,13 +31528,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - i32.const 0 - i32.ge_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + i32.const 0 + i32.ge_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -31060,19 +31545,18 @@ f64.eq if local.get $6 - local.set $9 + local.set $10 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $10 br $~lib/typedarray/LAST_INDEX_OF<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $6 i32.const 1 i32.sub local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const -1 local.set $9 @@ -31108,6 +31592,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) global.get $std/typedarray/testArrayIndexOfAndLastIndexOfValues call $~lib/rt/pure/__retain local.set $0 @@ -31126,6 +31611,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -31438,8 +31925,8 @@ i32.const 4 i32.const 9 call $~lib/typedarray/Float64Array#subarray - local.set $5 - local.get $5 + local.set $6 + local.get $6 f64.const 3 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31454,7 +31941,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 4 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31469,7 +31956,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 5 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31484,7 +31971,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 9 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31499,7 +31986,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 10 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31514,7 +32001,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 11 i32.const 0 call $~lib/typedarray/Float64Array#indexOf @@ -31529,7 +32016,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 5 i32.const 1 call $~lib/typedarray/Float64Array#indexOf @@ -31544,7 +32031,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $6 f64.const 5 i32.const 2 call $~lib/typedarray/Float64Array#indexOf @@ -31565,7 +32052,7 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float64Array#includes (; 476 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) @@ -31577,6 +32064,7 @@ (local $8 i32) (local $9 i32) (local $10 f64) + (local $11 i32) block $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -31585,6 +32073,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 1 + drop local.get $3 local.set $6 local.get $5 @@ -31627,13 +32117,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 3 @@ -31657,19 +32147,18 @@ end if i32.const 1 - local.set $9 + local.set $11 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $11 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float64Array,f64>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 local.set $9 @@ -31688,6 +32177,7 @@ (local $8 i32) (local $9 i32) (local $10 f32) + (local $11 i32) block $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 (result i32) local.get $0 call $~lib/rt/pure/__retain @@ -31696,6 +32186,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 1 + drop local.get $3 local.set $6 local.get $5 @@ -31738,13 +32230,13 @@ local.get $5 i32.load offset=4 local.set $8 - block $break|0 - loop $continue|0 - local.get $6 - local.get $7 - i32.lt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $6 + local.get $7 + i32.lt_s + local.set $9 + local.get $9 + if local.get $8 local.get $6 i32.const 2 @@ -31768,19 +32260,18 @@ end if i32.const 1 - local.set $9 + local.set $11 local.get $5 call $~lib/rt/pure/__release - local.get $9 + local.get $11 br $~lib/typedarray/INCLUDES<~lib/typedarray/Float32Array,f32>|inlined.0 end local.get $6 i32.const 1 i32.add local.set $6 - br $continue|0 + br $while-continue|0 end - unreachable end i32.const 0 local.set $9 @@ -31862,50 +32353,53 @@ (local $5 i32) (local $6 i32) (local $7 i32) - (local $8 i64) + (local $8 i32) (local $9 i64) + (local $10 i64) + (local $11 i32) + (local $12 i32) i32.const 2432 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i32.const 10000 - i32.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i32.const 10000 + i32.ge_u + local.set $4 + local.get $4 + if local.get $1 i32.const 10000 i32.div_u - local.set $4 + local.set $5 local.get $1 i32.const 10000 i32.rem_u - local.set $5 - local.get $4 - local.set $1 + local.set $6 local.get $5 + local.set $1 + local.get $6 i32.const 100 i32.div_u - local.set $6 - local.get $5 + local.set $7 + local.get $6 i32.const 100 i32.rem_u - local.set $7 + local.set $8 local.get $3 - local.get $6 + local.get $7 i32.const 2 i32.shl i32.add i64.load32_u - local.set $8 + local.set $9 local.get $3 - local.get $7 + local.get $8 i32.const 2 i32.shl i32.add i64.load32_u - local.set $9 + local.set $10 local.get $2 i32.const 4 i32.sub @@ -31915,15 +32409,14 @@ i32.const 1 i32.shl i32.add - local.get $8 local.get $9 + local.get $10 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $1 i32.const 100 @@ -31932,30 +32425,30 @@ local.get $1 i32.const 100 i32.div_u - local.set $7 + local.set $4 local.get $1 i32.const 100 i32.rem_u - local.set $6 - local.get $7 + local.set $11 + local.get $4 local.set $1 local.get $2 i32.const 2 i32.sub local.set $2 local.get $3 - local.get $6 + local.get $11 i32.const 2 i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store end local.get $1 @@ -31972,13 +32465,13 @@ i32.shl i32.add i32.load - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store else local.get $2 @@ -31988,13 +32481,13 @@ i32.const 48 local.get $1 i32.add - local.set $5 + local.set $12 local.get $0 local.get $2 i32.const 1 i32.shl i32.add - local.get $5 + local.get $12 i32.store16 end ) @@ -32039,6 +32532,8 @@ local.set $5 local.get $2 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -32053,6 +32548,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 481 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 24 i32.shl @@ -32096,6 +32597,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -32111,6 +32614,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 24 i32.shl @@ -32130,6 +32635,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -32315,6 +32822,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -32412,6 +32921,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -32430,6 +32940,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -32446,15 +32958,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -32471,39 +32983,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $9 + local.get $10 return end local.get $5 @@ -32514,17 +33028,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 488 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -32635,6 +33148,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Int8Array#join @@ -32700,6 +33215,8 @@ local.set $4 local.get $1 local.set $3 + i32.const 0 + drop local.get $5 local.get $4 local.get $3 @@ -32708,6 +33225,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 492 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 255 i32.and @@ -32738,6 +33261,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 255 i32.and @@ -32751,6 +33278,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -32823,6 +33352,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -32950,6 +33481,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint8Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint8Array#join @@ -33040,6 +33573,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint8ClampedArray#join @@ -33079,6 +33614,12 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 501 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 i32.const 16 i32.shl @@ -33114,6 +33655,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -33129,6 +33672,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 16 i32.shl @@ -33148,6 +33693,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -33226,6 +33773,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -33353,6 +33902,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int16Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Int16Array#join @@ -33392,6 +33943,12 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 507 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.const 65535 i32.and @@ -33422,6 +33979,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 i32.const 65535 i32.and @@ -33435,6 +33996,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -33507,6 +34070,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -33634,6 +34199,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint16Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint16Array#join @@ -33673,6 +34240,12 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 513 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/itoa32 return @@ -33700,6 +34273,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i32.const 0 i32.lt_s @@ -33711,6 +34286,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 call $~lib/util/number/decimalCount32 local.get $4 @@ -33722,6 +34299,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -33800,6 +34379,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -33927,6 +34508,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Int32Array#join @@ -33966,6 +34549,12 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 519 ;) (param $0 i32) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $0 call $~lib/util/number/utoa32 return @@ -33992,6 +34581,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 1 + drop local.get $2 call $~lib/util/number/decimalCount32 local.set $3 @@ -34001,6 +34594,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -34073,6 +34668,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -34200,6 +34797,8 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint32Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint32Array#join @@ -34313,77 +34912,78 @@ ) (func $~lib/util/number/utoa64_lut (; 526 ;) (param $0 i32) (param $1 i64) (param $2 i32) (local $3 i32) - (local $4 i64) - (local $5 i32) + (local $4 i32) + (local $5 i64) (local $6 i32) (local $7 i32) (local $8 i32) (local $9 i32) (local $10 i32) (local $11 i32) - (local $12 i64) + (local $12 i32) (local $13 i64) + (local $14 i64) i32.const 2432 i32.load offset=4 local.set $3 - block $break|0 - loop $continue|0 - local.get $1 - i64.const 100000000 - i64.ge_u - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $1 + i64.const 100000000 + i64.ge_u + local.set $4 + local.get $4 + if local.get $1 i64.const 100000000 i64.div_u - local.set $4 + local.set $5 local.get $1 - local.get $4 + local.get $5 i64.const 100000000 i64.mul i64.sub i32.wrap_i64 - local.set $5 - local.get $4 - local.set $1 - local.get $5 - i32.const 10000 - i32.div_u local.set $6 local.get $5 - i32.const 10000 - i32.rem_u - local.set $7 + local.set $1 local.get $6 - i32.const 100 + i32.const 10000 i32.div_u - local.set $8 + local.set $7 local.get $6 - i32.const 100 + i32.const 10000 i32.rem_u - local.set $9 + local.set $8 local.get $7 i32.const 100 i32.div_u - local.set $10 + local.set $9 local.get $7 i32.const 100 i32.rem_u + local.set $10 + local.get $8 + i32.const 100 + i32.div_u local.set $11 + local.get $8 + i32.const 100 + i32.rem_u + local.set $12 local.get $3 - local.get $10 + local.get $11 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $11 + local.get $12 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -34393,26 +34993,26 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store local.get $3 - local.get $8 + local.get $9 i32.const 2 i32.shl i32.add i64.load32_u - local.set $12 + local.set $13 local.get $3 - local.get $9 + local.get $10 i32.const 2 i32.shl i32.add i64.load32_u - local.set $13 + local.set $14 local.get $2 i32.const 4 i32.sub @@ -34422,15 +35022,14 @@ i32.const 1 i32.shl i32.add - local.get $12 local.get $13 + local.get $14 i64.const 32 i64.shl i64.or i64.store - br $continue|0 + br $while-continue|0 end - unreachable end local.get $0 local.get $1 @@ -34490,6 +35089,8 @@ local.set $6 local.get $4 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -34512,6 +35113,8 @@ local.set $8 local.get $4 local.set $5 + i32.const 0 + drop local.get $6 local.get $8 local.get $5 @@ -34527,6 +35130,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 528 ;) (param $0 i64) (result i32) + i32.const 0 + drop + i32.const 1 + drop + i32.const 0 + drop local.get $0 call $~lib/util/number/itoa64 return @@ -34558,6 +35167,8 @@ end i32.const 0 local.set $3 + i32.const 1 + drop local.get $2 i64.const 0 i64.lt_s @@ -34569,6 +35180,8 @@ i64.sub local.set $2 end + i32.const 0 + drop local.get $2 i64.const 4294967295 i64.le_u @@ -34587,6 +35200,8 @@ local.set $7 local.get $3 local.set $6 + i32.const 0 + drop local.get $8 local.get $7 local.get $6 @@ -34603,6 +35218,8 @@ local.set $9 local.get $3 local.set $6 + i32.const 0 + drop local.get $7 local.get $9 local.get $6 @@ -34682,6 +35299,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -34809,6 +35428,8 @@ i32.const 4 i64.const 5 call $~lib/typedarray/Int64Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Int64Array#join @@ -34885,6 +35506,8 @@ local.set $5 local.get $3 local.set $4 + i32.const 0 + drop local.get $6 local.get $5 local.get $4 @@ -34905,6 +35528,8 @@ local.set $7 local.get $3 local.set $4 + i32.const 0 + drop local.get $5 local.get $7 local.get $4 @@ -34914,6 +35539,12 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 535 ;) (param $0 i64) (result i32) + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $0 call $~lib/util/number/utoa64 return @@ -34944,6 +35575,10 @@ end i32.const 0 local.set $3 + i32.const 0 + drop + i32.const 0 + drop local.get $2 i64.const 4294967295 i64.le_u @@ -34960,6 +35595,8 @@ local.set $6 local.get $3 local.set $5 + i32.const 0 + drop local.get $7 local.get $6 local.get $5 @@ -34974,6 +35611,8 @@ local.set $8 local.get $3 local.set $5 + i32.const 0 + drop local.get $6 local.get $8 local.get $5 @@ -35047,6 +35686,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -35174,6 +35815,8 @@ i32.const 4 i64.const 5 call $~lib/typedarray/Uint64Array#__set + i32.const 0 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint64Array#join @@ -35243,14 +35886,17 @@ (local $16 i32) (local $17 i32) (local $18 i32) - (local $19 i64) + (local $19 i32) (local $20 i64) (local $21 i64) (local $22 i64) (local $23 i64) - (local $24 i32) + (local $24 i64) (local $25 i32) (local $26 i32) + (local $27 i32) + (local $28 i32) + (local $29 i64) i32.const 0 local.get $4 i32.sub @@ -35288,13 +35934,13 @@ i32.const 3728 i32.load offset=4 local.set $16 - block $break|0 - loop $continue|0 - local.get $14 - i32.const 0 - i32.gt_s - i32.eqz - br_if $break|0 + loop $while-continue|0 + local.get $14 + i32.const 0 + i32.gt_s + local.set $17 + local.get $17 + if block $break|1 block $case10|1 block $case9|1 @@ -35308,44 +35954,44 @@ block $case1|1 block $case0|1 local.get $14 - local.set $18 - local.get $18 + local.set $19 + local.get $19 i32.const 10 i32.eq br_if $case0|1 - local.get $18 + local.get $19 i32.const 9 i32.eq br_if $case1|1 - local.get $18 + local.get $19 i32.const 8 i32.eq br_if $case2|1 - local.get $18 + local.get $19 i32.const 7 i32.eq br_if $case3|1 - local.get $18 + local.get $19 i32.const 6 i32.eq br_if $case4|1 - local.get $18 + local.get $19 i32.const 5 i32.eq br_if $case5|1 - local.get $18 + local.get $19 i32.const 4 i32.eq br_if $case6|1 - local.get $18 + local.get $19 i32.const 3 i32.eq br_if $case7|1 - local.get $18 + local.get $19 i32.const 2 i32.eq br_if $case8|1 - local.get $18 + local.get $19 i32.const 1 i32.eq br_if $case9|1 @@ -35354,7 +36000,7 @@ local.get $12 i32.const 1000000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000000 i32.rem_u @@ -35364,7 +36010,7 @@ local.get $12 i32.const 100000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000000 i32.rem_u @@ -35374,7 +36020,7 @@ local.get $12 i32.const 10000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000000 i32.rem_u @@ -35384,7 +36030,7 @@ local.get $12 i32.const 1000000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000000 i32.rem_u @@ -35394,7 +36040,7 @@ local.get $12 i32.const 100000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100000 i32.rem_u @@ -35404,7 +36050,7 @@ local.get $12 i32.const 10000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10000 i32.rem_u @@ -35414,7 +36060,7 @@ local.get $12 i32.const 1000 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 1000 i32.rem_u @@ -35424,7 +36070,7 @@ local.get $12 i32.const 100 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 100 i32.rem_u @@ -35434,7 +36080,7 @@ local.get $12 i32.const 10 i32.div_u - local.set $17 + local.set $18 local.get $12 i32.const 10 i32.rem_u @@ -35442,31 +36088,31 @@ br $break|1 end local.get $12 - local.set $17 + local.set $18 i32.const 0 local.set $12 br $break|1 end i32.const 0 - local.set $17 + local.set $18 br $break|1 end - local.get $17 + local.get $18 local.get $15 i32.or if local.get $0 local.get $15 - local.tee $18 + local.tee $19 i32.const 1 i32.add local.set $15 - local.get $18 + local.get $19 i32.const 1 i32.shl i32.add i32.const 48 - local.get $17 + local.get $18 i32.const 65535 i32.and i32.add @@ -35483,8 +36129,8 @@ i64.shl local.get $13 i64.add - local.set $19 - local.get $19 + local.set $20 + local.get $20 local.get $5 i64.le_u if @@ -35493,13 +36139,13 @@ i32.add global.set $~lib/util/number/_K local.get $0 - local.set $24 + local.set $25 local.get $15 - local.set $18 + local.set $19 local.get $5 + local.set $24 + local.get $20 local.set $23 - local.get $19 - local.set $22 local.get $16 local.get $14 i32.const 2 @@ -35509,228 +36155,230 @@ local.get $7 i64.extend_i32_s i64.shl - local.set $21 + local.set $22 local.get $10 - local.set $20 - local.get $24 - local.get $18 + local.set $21 + local.get $25 + local.get $19 i32.const 1 i32.sub i32.const 1 i32.shl i32.add - local.set $25 - local.get $25 - i32.load16_u local.set $26 - block $break|2 - loop $continue|2 + local.get $26 + i32.load16_u + local.set $27 + loop $while-continue|3 + local.get $23 + local.get $21 + i64.lt_u + if (result i32) + local.get $24 + local.get $23 + i64.sub local.get $22 - local.get $20 + i64.ge_u + else + i32.const 0 + end + if (result i32) + local.get $23 + local.get $22 + i64.add + local.get $21 i64.lt_u if (result i32) + i32.const 1 + else + local.get $21 local.get $23 - local.get $22 i64.sub - local.get $21 - i64.ge_u - else - i32.const 0 - end - if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 - i64.lt_u - if (result i32) - i32.const 1 - else - local.get $20 - local.get $22 - i64.sub - local.get $22 - local.get $21 - i64.add - local.get $20 - i64.sub - i64.gt_u - end - else - i32.const 0 + local.get $21 + i64.sub + i64.gt_u end - i32.eqz - br_if $break|2 - local.get $26 + else + i32.const 0 + end + local.set $28 + local.get $28 + if + local.get $27 i32.const 1 i32.sub - local.set $26 + local.set $27 + local.get $23 local.get $22 - local.get $21 i64.add - local.set $22 - br $continue|2 + local.set $23 + br $while-continue|3 end - unreachable end - local.get $25 local.get $26 + local.get $27 i32.store16 local.get $15 return end - br $continue|0 + br $while-continue|0 end - unreachable end - loop $continue|3 - local.get $13 - i64.const 10 - i64.mul - local.set $13 - local.get $5 - i64.const 10 - i64.mul - local.set $5 - local.get $13 - local.get $7 - i64.extend_i32_s - i64.shr_u - local.set $19 - local.get $19 - local.get $15 - i64.extend_i32_s - i64.or - i64.const 0 - i64.ne - if - local.get $0 - local.get $15 - local.tee $17 - i32.const 1 - i32.add - local.set $15 - local.get $17 - i32.const 1 - i32.shl - i32.add - i32.const 48 - local.get $19 - i32.wrap_i64 - i32.const 65535 - i32.and - i32.add - i32.store16 - end - local.get $13 - local.get $9 - i64.and - local.set $13 - local.get $14 + loop $while-continue|4 i32.const 1 - i32.sub - local.set $14 - local.get $13 - local.get $5 - i64.lt_u + local.set $17 + local.get $17 if - global.get $~lib/util/number/_K - local.get $14 - i32.add - global.set $~lib/util/number/_K - local.get $10 - local.get $16 - i32.const 0 - local.get $14 - i32.sub - i32.const 2 - i32.shl - i32.add - i64.load32_u + local.get $13 + i64.const 10 i64.mul - local.set $10 - local.get $0 - local.set $24 - local.get $15 - local.set $18 + local.set $13 local.get $5 - local.set $23 + i64.const 10 + i64.mul + local.set $5 local.get $13 - local.set $22 - local.get $8 - local.set $21 - local.get $10 - local.set $20 + local.get $7 + i64.extend_i32_s + i64.shr_u + local.set $24 local.get $24 - local.get $18 + local.get $15 + i64.extend_i32_s + i64.or + i64.const 0 + i64.ne + if + local.get $0 + local.get $15 + local.tee $27 + i32.const 1 + i32.add + local.set $15 + local.get $27 + i32.const 1 + i32.shl + i32.add + i32.const 48 + local.get $24 + i32.wrap_i64 + i32.const 65535 + i32.and + i32.add + i32.store16 + end + local.get $13 + local.get $9 + i64.and + local.set $13 + local.get $14 i32.const 1 i32.sub - i32.const 1 - i32.shl - i32.add - local.set $17 - local.get $17 - i32.load16_u - local.set $26 - block $break|4 - loop $continue|4 - local.get $22 - local.get $20 + local.set $14 + local.get $13 + local.get $5 + i64.lt_u + if + global.get $~lib/util/number/_K + local.get $14 + i32.add + global.set $~lib/util/number/_K + local.get $10 + local.get $16 + i32.const 0 + local.get $14 + i32.sub + i32.const 2 + i32.shl + i32.add + i64.load32_u + i64.mul + local.set $10 + local.get $0 + local.set $19 + local.get $15 + local.set $28 + local.get $5 + local.set $29 + local.get $13 + local.set $23 + local.get $8 + local.set $22 + local.get $10 + local.set $21 + local.get $19 + local.get $28 + i32.const 1 + i32.sub + i32.const 1 + i32.shl + i32.add + local.set $27 + local.get $27 + i32.load16_u + local.set $26 + loop $while-continue|6 + local.get $23 + local.get $21 i64.lt_u if (result i32) + local.get $29 local.get $23 - local.get $22 i64.sub - local.get $21 + local.get $22 i64.ge_u else i32.const 0 end if (result i32) + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.lt_u if (result i32) i32.const 1 else - local.get $20 - local.get $22 + local.get $21 + local.get $23 i64.sub + local.get $23 local.get $22 - local.get $21 i64.add - local.get $20 + local.get $21 i64.sub i64.gt_u end else i32.const 0 end - i32.eqz - br_if $break|4 - local.get $26 - i32.const 1 - i32.sub - local.set $26 - local.get $22 - local.get $21 - i64.add - local.set $22 - br $continue|4 + local.set $25 + local.get $25 + if + local.get $26 + i32.const 1 + i32.sub + local.set $26 + local.get $23 + local.get $22 + i64.add + local.set $23 + br $while-continue|6 + end end - unreachable + local.get $27 + local.get $26 + i32.store16 + local.get $15 + return end - local.get $17 - local.get $26 - i32.store16 - local.get $15 - return + br $while-continue|4 end - br $continue|3 end - unreachable + local.get $15 ) (func $~lib/util/number/prettify (; 544 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -35782,6 +36430,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -35890,6 +36540,8 @@ local.get $5 local.get $4 i32.lt_s + local.set $6 + local.get $6 if local.get $0 local.get $5 @@ -35920,41 +36572,43 @@ local.get $0 i32.const 4 i32.add - local.set $4 + local.set $5 local.get $3 i32.const 1 i32.sub - local.set $5 - local.get $5 - i32.const 0 - i32.lt_s local.set $6 local.get $6 + i32.const 0 + i32.lt_s + local.set $4 + local.get $4 if i32.const 0 - local.get $5 + local.get $6 i32.sub - local.set $5 + local.set $6 end - local.get $5 + local.get $6 call $~lib/util/number/decimalCount32 i32.const 1 i32.add local.set $7 - local.get $4 - local.set $10 local.get $5 + local.set $10 + local.get $6 local.set $9 local.get $7 local.set $8 + i32.const 0 + drop local.get $10 local.get $9 local.get $8 call $~lib/util/number/utoa32_lut - local.get $4 + local.get $5 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 local.get $7 @@ -36000,8 +36654,8 @@ local.get $8 i32.const 0 i32.lt_s - local.set $6 - local.get $6 + local.set $4 + local.get $4 if i32.const 0 local.get $8 @@ -36012,24 +36666,26 @@ call $~lib/util/number/decimalCount32 i32.const 1 i32.add - local.set $4 + local.set $5 local.get $9 local.set $11 local.get $8 - local.set $5 - local.get $4 + local.set $6 + local.get $5 local.set $10 + i32.const 0 + drop local.get $11 - local.get $5 + local.get $6 local.get $10 call $~lib/util/number/utoa32_lut local.get $9 i32.const 45 i32.const 43 - local.get $6 + local.get $4 select i32.store16 - local.get $4 + local.get $5 i32.add local.set $1 local.get $1 @@ -36669,6 +37325,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -36798,6 +37456,8 @@ i32.const 4 f32.const 5 call $~lib/typedarray/Float32Array#__set + i32.const 1 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Float32Array#join @@ -36902,6 +37562,8 @@ local.get $4 local.get $3 i32.lt_s + local.set $5 + local.get $5 if local.get $0 local.get $4 @@ -37029,6 +37691,8 @@ i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set + i32.const 1 + drop local.get $1 i32.const 2464 call $~lib/typedarray/Float64Array#join @@ -37306,6 +37970,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37324,6 +37989,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -37352,32 +38019,36 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Int8Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Int8Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Int8Array#__get i32.eq i32.eqz @@ -37389,10 +38060,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -37402,10 +38073,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8Array.wrap (; 561 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -37557,6 +38228,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37575,6 +38247,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -37601,32 +38275,38 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Uint8Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Uint8Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Uint8Array#__get i32.eq i32.eqz @@ -37638,10 +38318,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -37651,10 +38331,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint8ClampedArray.wrap (; 564 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -37806,6 +38486,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -37824,6 +38505,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -37850,32 +38533,40 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Uint8ClampedArray.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Uint8ClampedArray#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Uint8ClampedArray#__get i32.eq i32.eqz @@ -37887,10 +38578,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -37900,10 +38591,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int16Array.wrap (; 567 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -38055,6 +38746,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38073,6 +38765,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -38101,32 +38795,42 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Int16Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Int16Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Int16Array#__get i32.eq i32.eqz @@ -38138,10 +38842,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -38151,10 +38855,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint16Array.wrap (; 570 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -38306,6 +39010,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38324,6 +39029,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -38350,32 +39057,44 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Uint16Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Uint16Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Uint16Array#__get i32.eq i32.eqz @@ -38387,10 +39106,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -38400,10 +39119,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int32Array.wrap (; 573 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -38555,6 +39274,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38573,6 +39293,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -38597,32 +39319,46 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Int32Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Int32Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Int32Array#__get i32.eq i32.eqz @@ -38634,10 +39370,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -38647,10 +39383,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint32Array.wrap (; 576 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -38802,6 +39538,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -38820,6 +39557,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -38844,32 +39583,48 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Uint32Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Uint32Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Uint32Array#__get i32.eq i32.eqz @@ -38881,10 +39636,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -38894,10 +39649,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int64Array.wrap (; 579 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -39049,6 +39804,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39067,6 +39823,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -39092,32 +39850,50 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Int64Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Int64Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Int64Array#__get i64.eq i32.eqz @@ -39129,10 +39905,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -39142,10 +39918,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Uint64Array.wrap (; 582 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -39297,6 +40073,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39315,6 +40092,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -39340,32 +40119,52 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Uint64Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Uint64Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Uint64Array#__get i64.eq i32.eqz @@ -39377,10 +40176,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -39390,10 +40189,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float32Array.wrap (; 585 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -39545,6 +40344,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39563,6 +40363,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -39588,32 +40390,54 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Float32Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Float32Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Float32Array#__get f32.eq i32.eqz @@ -39625,10 +40449,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -39638,10 +40462,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Float64Array.wrap (; 588 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) @@ -39793,6 +40617,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) global.get $std/typedarray/testArrayWrapValues call $~lib/rt/pure/__retain local.set $0 @@ -39811,6 +40636,8 @@ local.get $4 local.get $1 i32.lt_s + local.set $5 + local.get $5 if local.get $3 local.get $4 @@ -39836,32 +40663,56 @@ i32.load offset=8 i32.add call $~lib/arraybuffer/ArrayBuffer#slice - local.set $5 - i32.const 0 local.set $6 + i32.const 0 + local.set $7 + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop i32.const 1 global.set $~lib/argc - local.get $5 + local.get $6 i32.const 0 i32.const 0 call $~lib/typedarray/Float64Array.wrap|trampoline - local.set $4 - local.get $6 + local.set $5 + local.get $7 call $~lib/rt/pure/__release - local.get $4 - local.set $6 + local.get $5 + local.set $7 i32.const 0 - local.set $4 + local.set $5 loop $for-loop|1 - local.get $4 + local.get $5 local.get $1 i32.lt_s + local.set $4 + local.get $4 if local.get $3 - local.get $4 + local.get $5 call $~lib/typedarray/Float64Array#__get - local.get $6 - local.get $4 + local.get $7 + local.get $5 call $~lib/typedarray/Float64Array#__get f64.eq i32.eqz @@ -39873,10 +40724,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $5 i32.const 1 i32.add - local.set $4 + local.set $5 br $for-loop|1 end end @@ -39886,10 +40737,10 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release ) (func $~lib/typedarray/Int8Array#set<~lib/array/Array> (; 591 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) @@ -39899,6 +40750,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -39910,6 +40762,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -39944,6 +40798,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -39963,7 +40819,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -39995,6 +40859,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -40023,27 +40888,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Int8Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 4224 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_s local.get $5 f64.convert_i32_s + local.get $6 + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -40082,7 +40949,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -40094,6 +40962,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40128,6 +40998,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40147,26 +41019,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_s else i32.const 0 @@ -40194,6 +41072,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -40205,6 +41084,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40239,6 +41120,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40258,7 +41141,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -40297,7 +41188,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -40309,6 +41201,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40343,6 +41237,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40362,26 +41258,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_s else i32.const 0 @@ -40416,6 +41318,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40450,6 +41354,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40476,6 +41382,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -40487,6 +41394,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40521,6 +41430,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40540,7 +41451,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -40582,6 +41501,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40616,6 +41537,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40742,6 +41665,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -40769,6 +41694,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int8Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 0 @@ -40805,6 +41732,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -40816,6 +41744,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -40850,6 +41780,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -40869,7 +41801,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -40914,6 +41854,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -40942,27 +41883,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Uint8Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 4432 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_u local.get $5 f64.convert_i32_u + local.get $6 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -40997,7 +41940,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41009,6 +41953,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41043,6 +41989,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41062,26 +42010,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_u else i32.const 0 @@ -41109,6 +42063,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41120,6 +42075,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41154,6 +42111,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41173,7 +42132,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -41208,7 +42175,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41220,6 +42188,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41254,6 +42224,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41273,26 +42245,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_u else i32.const 0 @@ -41327,6 +42305,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41361,6 +42341,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41387,6 +42369,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41398,6 +42381,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41432,6 +42417,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41451,7 +42438,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 0 @@ -41493,6 +42488,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41527,6 +42524,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41653,6 +42652,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -41680,6 +42681,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint8Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 0 @@ -41717,6 +42720,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41728,6 +42732,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41762,6 +42768,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41781,30 +42789,40 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $11 + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.const 255 - local.get $10 + local.get $11 i32.sub i32.const 31 i32.shr_s - local.get $10 + local.get $11 i32.or i32.and i32.store8 @@ -41827,6 +42845,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -41855,27 +42874,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Uint8ClampedArray#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 4640 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_u local.get $5 f64.convert_i32_u + local.get $6 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -41910,7 +42931,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -41922,6 +42944,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -41956,6 +42980,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -41975,28 +43001,34 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $10 + local.get $11 f32.min f32.max i32.trunc_f32_u @@ -42026,7 +43058,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 i64) + (local $10 i32) + (local $11 i64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42038,6 +43071,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42072,6 +43107,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42091,20 +43128,30 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add i64.load - local.set $10 + local.set $11 + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.wrap_i64 i32.const 31 i32.shr_s @@ -42112,13 +43159,13 @@ i32.xor i64.extend_i32_s i32.const 255 - local.get $10 + local.get $11 i32.wrap_i64 i32.sub i32.const 31 i32.shr_s i64.extend_i32_s - local.get $10 + local.get $11 i64.or i64.and i64.store8 @@ -42144,7 +43191,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42156,6 +43204,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42190,6 +43240,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42209,28 +43261,34 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) f64.const 0 f64.const 255 - local.get $10 + local.get $11 f64.min f64.max i32.trunc_f64_u @@ -42267,6 +43325,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42301,6 +43361,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42328,6 +43390,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42339,6 +43402,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42373,6 +43438,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42392,30 +43459,40 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 1 i32.shl i32.add i32.load16_s - local.set $10 + local.set $11 + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.const 255 - local.get $10 + local.get $11 i32.sub i32.const 31 i32.shr_s - local.get $10 + local.get $11 i32.or i32.and i32.store8 @@ -42442,6 +43519,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42453,6 +43531,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42487,6 +43567,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42506,30 +43588,40 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 0 i32.shl i32.add i32.load8_s - local.set $10 + local.set $11 + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.const 255 - local.get $10 + local.get $11 i32.sub i32.const 31 i32.shr_s - local.get $10 + local.get $11 i32.or i32.and i32.store8 @@ -42655,6 +43747,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -42682,6 +43776,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> + i32.const 1 + drop local.get $4 i32.const 10 i32.const 0 @@ -42718,6 +43814,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42729,6 +43826,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42763,6 +43862,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42782,7 +43883,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -42818,6 +43927,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -42846,27 +43956,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Int16Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 4880 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_s local.get $5 f64.convert_i32_s + local.get $6 + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -42901,7 +44013,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -42913,6 +44026,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -42947,6 +44062,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -42966,26 +44083,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 1 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_s else i32.const 0 @@ -43013,6 +44136,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43024,6 +44148,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43058,6 +44184,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43077,7 +44205,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -43112,7 +44248,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43124,6 +44261,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43158,6 +44297,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43177,26 +44318,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 1 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_s else i32.const 0 @@ -43224,6 +44371,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43235,6 +44383,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43269,6 +44419,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43288,7 +44440,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -43330,6 +44490,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43364,6 +44526,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43390,6 +44554,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43401,6 +44566,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43435,6 +44602,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43454,7 +44623,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -43589,6 +44766,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -43616,6 +44795,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int16Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 1 @@ -43652,6 +44833,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43663,6 +44845,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43697,6 +44881,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43716,7 +44902,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -43761,6 +44955,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -43789,27 +44984,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Uint16Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 5168 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_u local.get $5 f64.convert_i32_u + local.get $6 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -43844,7 +45041,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43856,6 +45054,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -43890,6 +45090,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -43909,26 +45111,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 1 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_u else i32.const 0 @@ -43956,6 +45164,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -43967,6 +45176,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44001,6 +45212,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44020,7 +45233,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -44055,7 +45276,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44067,6 +45289,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44101,6 +45325,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44120,26 +45346,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 1 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_u else i32.const 0 @@ -44167,6 +45399,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44178,6 +45411,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44212,6 +45447,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44231,7 +45468,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -44273,6 +45518,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44307,6 +45554,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44333,6 +45582,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44344,6 +45594,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44378,6 +45630,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44397,7 +45651,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 1 @@ -44532,6 +45794,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -44559,6 +45823,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint16Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 1 @@ -44602,6 +45868,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44636,6 +45904,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44659,6 +45929,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -44687,27 +45958,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Int32Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 5472 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_s local.get $5 f64.convert_i32_s + local.get $6 + f64.convert_i32_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -44742,7 +46015,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44754,6 +46028,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44788,6 +46064,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44807,26 +46085,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 2 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_s else i32.const 0 @@ -44854,6 +46138,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44865,6 +46150,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44899,6 +46186,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -44918,7 +46207,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -44953,7 +46250,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -44965,6 +46263,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -44999,6 +46299,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45018,26 +46320,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 2 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_s else i32.const 0 @@ -45065,6 +46373,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45076,6 +46385,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45110,6 +46421,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45129,7 +46442,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -45164,6 +46485,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45175,6 +46497,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45209,6 +46533,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45228,7 +46554,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -45263,6 +46597,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45274,6 +46609,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45308,6 +46645,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45327,7 +46666,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -45462,6 +46809,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -45489,6 +46838,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int32Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 2 @@ -45532,6 +46883,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45566,6 +46919,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45602,6 +46957,7 @@ (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -45630,27 +46986,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Uint32Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i32.ne if i32.const 5840 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i32_u local.get $5 f64.convert_i32_u + local.get $6 + f64.convert_i32_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -45685,7 +47043,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45697,6 +47056,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45731,6 +47092,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45750,26 +47113,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 2 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f32_u else i32.const 0 @@ -45797,6 +47166,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45808,6 +47178,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45842,6 +47214,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45861,7 +47235,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -45896,7 +47278,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -45908,6 +47291,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -45942,6 +47327,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -45961,26 +47348,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 2 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i32) - local.get $10 + local.get $11 i32.trunc_f64_u else i32.const 0 @@ -46008,6 +47401,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46019,6 +47413,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46053,6 +47449,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46072,7 +47470,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -46107,6 +47513,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46118,6 +47525,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46152,6 +47561,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46171,7 +47582,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -46206,6 +47625,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46217,6 +47637,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46251,6 +47673,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46270,7 +47694,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 2 @@ -46405,6 +47837,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -46432,6 +47866,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint32Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 2 @@ -46468,6 +47904,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46479,6 +47916,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46513,6 +47952,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46532,7 +47973,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -46575,8 +48024,9 @@ (func $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> (; 666 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i64) + (local $6 i64) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -46605,27 +48055,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Int64Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i64.ne if i32.const 6240 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i64_s local.get $5 f64.convert_i64_s + local.get $6 + f64.convert_i64_s f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -46660,7 +48112,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46672,6 +48125,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46706,6 +48161,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46725,26 +48182,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 3 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i64) - local.get $10 + local.get $11 i64.trunc_f32_s else i64.const 0 @@ -46779,6 +48242,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46813,6 +48278,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46839,7 +48306,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46851,6 +48319,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46885,6 +48355,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -46904,26 +48376,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 3 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i64) - local.get $10 + local.get $11 i64.trunc_f64_s else i64.const 0 @@ -46951,6 +48429,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -46962,6 +48441,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -46996,6 +48477,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47015,7 +48498,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -47050,6 +48541,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47061,6 +48553,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47095,6 +48589,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47114,7 +48610,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -47149,6 +48653,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47160,6 +48665,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47194,6 +48701,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47213,7 +48722,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -47348,6 +48865,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -47375,6 +48894,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int64Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 3 @@ -47411,6 +48932,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47422,6 +48944,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47456,6 +48980,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47475,7 +49001,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -47509,8 +49043,9 @@ (func $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> (; 676 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 i64) + (local $4 i32) (local $5 i64) + (local $6 i64) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -47539,27 +49074,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Uint64Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 i64.ne if i32.const 6768 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.convert_i64_u local.get $5 f64.convert_i64_u + local.get $6 + f64.convert_i64_u f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -47594,7 +49131,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47606,6 +49144,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47640,6 +49180,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47659,26 +49201,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 3 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i64) - local.get $10 + local.get $11 i64.trunc_f32_u else i64.const 0 @@ -47713,6 +49261,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47747,6 +49297,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47773,7 +49325,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f64) + (local $10 i32) + (local $11 f64) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47785,6 +49338,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47819,6 +49374,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47838,26 +49395,32 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 3 i32.shl i32.add f64.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 3 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f64.sub f64.const 0 f64.eq if (result i64) - local.get $10 + local.get $11 i64.trunc_f64_u else i64.const 0 @@ -47885,6 +49448,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47896,6 +49460,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -47930,6 +49496,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -47949,7 +49517,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -47984,6 +49560,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -47995,6 +49572,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48029,6 +49608,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48048,7 +49629,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -48083,6 +49672,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48094,6 +49684,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48128,6 +49720,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48147,7 +49741,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -48282,6 +49884,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> + i32.const 1 + drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -48309,6 +49913,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint64Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 3 @@ -48345,6 +49951,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48356,6 +49963,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48390,6 +49999,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48409,7 +50020,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 2 @@ -48449,8 +50068,9 @@ (func $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> (; 686 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f32) + (local $4 i32) (local $5 f32) + (local $6 f32) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -48479,27 +50099,29 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Float32Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 f32.ne if i32.const 7264 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 - f64.promote_f32 local.get $5 f64.promote_f32 + local.get $6 + f64.promote_f32 f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -48541,6 +50163,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48575,6 +50199,8 @@ call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48601,6 +50227,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48612,6 +50239,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48646,6 +50275,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48665,7 +50296,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 2 @@ -48701,6 +50340,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48712,6 +50352,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48746,6 +50388,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48765,7 +50409,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 2 @@ -48801,6 +50453,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48812,6 +50465,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48846,6 +50501,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48865,7 +50522,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 2 @@ -48901,6 +50566,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -48912,6 +50578,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -48946,6 +50614,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -48965,7 +50635,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 2 @@ -49101,6 +50779,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> + i32.const 0 + drop local.get $4 local.get $1 i32.const 0 @@ -49113,6 +50793,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Float32Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 2 @@ -49149,6 +50831,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49160,6 +50843,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49194,6 +50879,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49213,7 +50900,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 3 @@ -49253,8 +50948,9 @@ (func $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> (; 695 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - (local $4 f64) + (local $4 i32) (local $5 f64) + (local $6 f64) local.get $0 call $~lib/rt/pure/__retain local.set $0 @@ -49283,25 +50979,27 @@ local.get $3 local.get $2 i32.lt_s + local.set $4 + local.get $4 if local.get $0 local.get $3 call $~lib/typedarray/Float64Array#__get - local.set $4 + local.set $5 local.get $1 local.get $3 call $~lib/array/Array#__unchecked_get - local.set $5 - local.get $4 + local.set $6 local.get $5 + local.get $6 f64.ne if i32.const 7600 i32.const 3 local.get $3 f64.convert_i32_s - local.get $4 local.get $5 + local.get $6 f64.const 0 f64.const 0 call $~lib/builtins/trace @@ -49336,6 +51034,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49347,6 +51046,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49381,6 +51082,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49400,7 +51103,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 0 + drop local.get $6 local.get $9 i32.const 3 @@ -49436,6 +51147,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49447,6 +51159,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49481,6 +51195,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49500,7 +51216,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 3 @@ -49536,6 +51260,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49547,6 +51272,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49581,6 +51308,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49600,7 +51329,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 3 @@ -49636,6 +51373,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49647,6 +51385,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49681,6 +51421,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49700,7 +51442,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 3 @@ -49736,6 +51486,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49747,6 +51498,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -49781,6 +51534,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -49800,7 +51555,15 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 0 + drop + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 3 @@ -49936,6 +51699,8 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> + i32.const 0 + drop local.get $4 local.get $1 i32.const 0 @@ -49948,6 +51713,8 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Float64Array#set<~lib/array/Array> + i32.const 0 + drop local.get $4 i32.const 10 i32.const 3 @@ -49984,7 +51751,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) - (local $10 f32) + (local $10 i32) + (local $11 f32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -49996,6 +51764,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -50030,6 +51800,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -50049,28 +51821,34 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 1 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add f32.load - local.set $10 + local.set $11 local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 - local.get $10 + local.get $11 + local.get $11 f32.sub f32.const 0 f32.eq if (result i32) f32.const 0 f32.const 255 - local.get $10 + local.get $11 f32.min f32.max i32.trunc_f32_u @@ -50101,6 +51879,7 @@ (local $8 i32) (local $9 i32) (local $10 i32) + (local $11 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -50112,6 +51891,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -50146,6 +51927,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -50165,30 +51948,40 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $11 + i32.const 0 + drop + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add - local.get $10 + local.get $11 i32.const 31 i32.shr_s i32.const -1 i32.xor i32.const 255 - local.get $10 + local.get $11 i32.sub i32.const 31 i32.shr_s - local.get $10 + local.get $11 i32.or i32.and i32.store8 @@ -50217,6 +52010,7 @@ (local $10 i32) (local $11 i32) (local $12 i32) + (local $13 i32) local.get $1 call $~lib/rt/pure/__retain local.set $1 @@ -50228,6 +52022,8 @@ local.set $4 local.get $2 local.set $3 + i32.const 0 + drop local.get $3 i32.const 0 i32.lt_s @@ -50262,6 +52058,8 @@ call $~lib/builtins/abort unreachable end + i32.const 0 + drop local.get $5 i32.load offset=4 local.get $3 @@ -50281,25 +52079,33 @@ local.get $9 local.get $8 i32.lt_s + local.set $10 + local.get $10 if + i32.const 1 + drop + i32.const 0 + drop local.get $7 local.get $9 i32.const 2 i32.shl i32.add i32.load - local.set $10 + local.set $11 + i32.const 1 + drop local.get $6 local.get $9 i32.const 0 i32.shl i32.add i32.const 255 - local.tee $11 - local.get $10 local.tee $12 local.get $11 + local.tee $13 local.get $12 + local.get $13 i32.lt_u select i32.store8 @@ -52517,34 +54323,44 @@ call $start:std/typedarray ) (func $~lib/array/Array#__visit_impl (; 707 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 708 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 709 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 710 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 711 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 712 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 713 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 714 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 715 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/array/Array#__visit_impl (; 716 ;) (param $0 i32) (param $1 i32) - nop + i32.const 0 + drop ) (func $~lib/rt/pure/__visit (; 717 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -52594,6 +54410,8 @@ call $~lib/rt/pure/decrement br $break|0 end + i32.const 1 + drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -52664,6 +54482,8 @@ call $~lib/rt/pure/collectWhite br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 8e91b607a9..0bf632c035 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -47,7 +47,7 @@ i32.ge_u select if - loop $continue|0 + loop $do-continue|0 local.get $0 i64.load local.get $1 @@ -68,20 +68,18 @@ local.tee $2 i32.const 4 i32.ge_u - br_if $continue|0 + br_if $do-continue|0 end end end - loop $continue|1 - block $break|1 - local.get $2 - local.tee $3 - i32.const 1 - i32.sub - local.set $2 - local.get $3 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $2 + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $1 i32.load16_u local.tee $3 @@ -94,18 +92,16 @@ local.get $3 i32.sub return - else - local.get $0 - i32.const 2 - i32.add - local.set $0 - local.get $1 - i32.const 2 - i32.add - local.set $1 - br $continue|1 end - unreachable + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + br $while-continue|1 end end i32.const 0 diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 2d8115eb12..a332baa892 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -53,6 +53,7 @@ (local $7 i32) (local $8 i32) (local $9 i32) + (local $10 i32) local.get $0 call $~lib/rt/stub/__retain local.set $0 @@ -71,6 +72,8 @@ i32.shl i32.add local.set $6 + i32.const 1 + drop local.get $4 i32.const 4 i32.ge_u @@ -87,15 +90,15 @@ i32.const 0 end if - block $break|0 - loop $continue|0 + block $do-break|0 + loop $do-continue|0 local.get $5 i64.load local.get $6 i64.load i64.ne if - br $break|0 + br $do-break|0 end local.get $5 i32.const 8 @@ -112,39 +115,41 @@ local.get $4 i32.const 4 i32.ge_u - br_if $continue|0 + local.set $7 + local.get $7 + br_if $do-continue|0 end end end - block $break|1 - loop $continue|1 - local.get $4 - local.tee $7 - i32.const 1 - i32.sub - local.set $4 - local.get $7 - i32.eqz - br_if $break|1 + loop $while-continue|1 + local.get $4 + local.tee $7 + i32.const 1 + i32.sub + local.set $4 + local.get $7 + local.set $7 + local.get $7 + if local.get $5 i32.load16_u - local.set $7 + local.set $8 local.get $6 i32.load16_u - local.set $8 - local.get $7 + local.set $9 local.get $8 + local.get $9 i32.ne if - local.get $7 local.get $8 + local.get $9 i32.sub - local.set $9 + local.set $10 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $9 + local.get $10 return end local.get $5 @@ -155,17 +160,16 @@ i32.const 2 i32.add local.set $6 - br $continue|1 + br $while-continue|1 end - unreachable end i32.const 0 - local.set $8 + local.set $7 local.get $0 call $~lib/rt/stub/__release local.get $2 call $~lib/rt/stub/__release - local.get $8 + local.get $7 ) (func $~lib/string/String.__eq (; 5 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) @@ -339,6 +343,8 @@ local.get $6 local.get $5 i32.store + i32.const 1 + drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/wasi-snapshot.untouched.wat b/tests/compiler/wasi-snapshot.untouched.wat index 96de47fe13..1ba0bd78ed 100644 --- a/tests/compiler/wasi-snapshot.untouched.wat +++ b/tests/compiler/wasi-snapshot.untouched.wat @@ -10,6 +10,12 @@ (export "memory" (memory $0)) (start $start) (func $start:wasi-snapshot (; 0 ;) + i32.const 1 + drop + nop + i32.const 1 + drop + nop i32.const 9 global.set $wasi-snapshot/sig ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index d0df6d2846..b024392d58 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -11,7 +11,7 @@ (start $start) (func $start:while (; 1 ;) (local $0 i32) - loop $continue|0 + loop $while-continue|0 global.get $while/n if global.get $while/n @@ -22,7 +22,7 @@ i32.const 1 i32.add global.set $while/m - br $continue|0 + br $while-continue|0 end end global.get $while/n @@ -49,7 +49,7 @@ global.set $while/n i32.const 0 global.set $while/m - loop $continue|1 + loop $while-continue|1 global.get $while/n if global.get $while/n @@ -60,7 +60,7 @@ i32.const 1 i32.add global.set $while/m - loop $continue|2 + loop $while-continue|2 global.get $while/n if global.get $while/n @@ -71,7 +71,7 @@ i32.const 1 i32.add global.set $while/o - br $continue|2 + br $while-continue|2 end end global.get $while/n @@ -85,14 +85,16 @@ end global.get $while/o i32.const 9 - i32.eq - br_if $continue|1 - i32.const 0 - i32.const 32 - i32.const 22 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 22 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + br $while-continue|1 end end global.get $while/n @@ -130,7 +132,7 @@ global.set $while/n i32.const 0 global.set $while/m - loop $continue|3 + loop $while-continue|3 global.get $while/n local.tee $0 i32.const 1 @@ -146,7 +148,7 @@ else i32.const 0 end - br_if $continue|3 + br_if $while-continue|3 end global.get $while/n i32.const -1 diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index 8df4e89ea7..fe86f5ac7c 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -12,11 +12,12 @@ (start $start) (func $start:while (; 1 ;) (local $0 i32) - block $break|0 - loop $continue|0 - global.get $while/n - i32.eqz - br_if $break|0 + (local $1 i32) + loop $while-continue|0 + global.get $while/n + local.set $0 + local.get $0 + if global.get $while/n i32.const 1 i32.sub @@ -25,9 +26,8 @@ i32.const 1 i32.add global.set $while/m - br $continue|0 + br $while-continue|0 end - unreachable end global.get $while/n i32.const 0 @@ -57,11 +57,11 @@ global.set $while/n i32.const 0 global.set $while/m - block $break|1 - loop $continue|1 - global.get $while/n - i32.eqz - br_if $break|1 + loop $while-continue|1 + global.get $while/n + local.set $0 + local.get $0 + if global.get $while/n i32.const 1 i32.sub @@ -70,11 +70,11 @@ i32.const 1 i32.add global.set $while/m - block $break|2 - loop $continue|2 - global.get $while/n - i32.eqz - br_if $break|2 + loop $while-continue|2 + global.get $while/n + local.set $1 + local.get $1 + if global.get $while/n i32.const 1 i32.sub @@ -83,9 +83,8 @@ i32.const 1 i32.add global.set $while/o - br $continue|2 + br $while-continue|2 end - unreachable end global.get $while/n i32.const 0 @@ -111,9 +110,8 @@ call $~lib/builtins/abort unreachable end - br $continue|1 + br $while-continue|1 end - unreachable end global.get $while/n i32.const 0 @@ -155,29 +153,28 @@ global.set $while/n i32.const 0 global.set $while/m - block $break|3 - loop $continue|3 - global.get $while/n - local.tee $0 + loop $while-continue|3 + global.get $while/n + local.tee $0 + i32.const 1 + i32.sub + global.set $while/n + local.get $0 + if (result i32) + global.get $while/m i32.const 1 - i32.sub - global.set $while/n - local.get $0 - if (result i32) - global.get $while/m - i32.const 1 - i32.add - global.set $while/m - global.get $while/m - else - i32.const 0 - end - i32.eqz - br_if $break|3 + i32.add + global.set $while/m + global.get $while/m + else + i32.const 0 + end + local.set $0 + local.get $0 + if nop - br $continue|3 + br $while-continue|3 end - unreachable end global.get $while/n i32.const -1 From 3d7ebf33ba6704c20a6881de1d41c148cda8075b Mon Sep 17 00:00:00 2001 From: dcode Date: Tue, 7 Jan 2020 16:05:01 +0100 Subject: [PATCH 06/19] refactor, consistent drops --- src/builtins.ts | 5 +- src/compiler.ts | 124 ++++++++++++++++++++++++------------------------ src/module.ts | 24 ++++++++++ 3 files changed, 89 insertions(+), 64 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index e05fc8a075..3569e7dda2 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -6,8 +6,7 @@ import { Compiler, Constraints, - RuntimeFeatures, - flatten + RuntimeFeatures } from "./compiler"; import { @@ -4933,7 +4932,7 @@ export function compileVisitMembers(compiler: Compiler): void { } if (!instance.base) code.push(module.return()); let block = relooper.addBlock( - flatten(module, code, NativeType.None) + module.flatten(code) ); relooper.addBranchForSwitch(outer, block, [ id ]); blocks.push(block); diff --git a/src/compiler.ts b/src/compiler.ts index 063a78949d..10aedf3572 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -401,7 +401,7 @@ export class Compiler extends DiagnosticEmitter { signature.nativeParams, signature.nativeResults, typesToNativeTypes(startFunctionInstance.additionalLocals), - module.block(null, startFunctionBody) + module.flatten(startFunctionBody) ); startFunctionInstance.finalize(module, funcRef); if (!explicitStart) module.setStart(funcRef); @@ -791,7 +791,7 @@ export class Compiler extends DiagnosticEmitter { startSignature.nativeResults, varTypes, startFunctionBody.length > 1 - ? module.block(null, startFunctionBody) + ? module.flatten(startFunctionBody) : startFunctionBody[0] ); previousBody.push( @@ -1299,7 +1299,7 @@ export class Compiler extends DiagnosticEmitter { signature.nativeParams, signature.nativeResults, typesToNativeTypes(instance.additionalLocals), - flatten(module, stmts, instance.signature.returnType.toNativeType()) + module.flatten(stmts, instance.signature.returnType.toNativeType()) ); // imported function @@ -1835,7 +1835,7 @@ export class Compiler extends DiagnosticEmitter { innerFlow.freeScopedLocals(); outerFlow.inherit(innerFlow); // TODO: only if not terminated? this.currentFlow = outerFlow; - return flatten(this.module, stmts, NativeType.None); + return this.module.flatten(stmts); } compileBreakStatement( @@ -1868,7 +1868,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeScopedLocals(); stmts.push(module.br(breakLabel)); flow.set(FlowFlags.BREAKS); - return flatten(module, stmts, NativeType.None); + return module.flatten(stmts); } compileContinueStatement( @@ -1903,7 +1903,7 @@ export class Compiler extends DiagnosticEmitter { } flow.freeScopedLocals(); stmts.push(module.br(continueLabel)); - return flatten(module, stmts, NativeType.None); + return module.flatten(stmts); } compileDoStatement( @@ -1957,7 +1957,9 @@ export class Compiler extends DiagnosticEmitter { // Shortcut if body never falls through if (bodyFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) { - bodyStmts.push(module.unreachable()); + bodyStmts.push( + module.unreachable() + ); flow.inherit(bodyFlow); // Otherwise evaluate the condition @@ -1976,12 +1978,22 @@ export class Compiler extends DiagnosticEmitter { // Shortcut if condition is always false if (condKind == ConditionKind.FALSE) { + bodyStmts.push( + module.drop(condExpr) + ); + this.performAutoreleases(condFlow, bodyStmts); flow.inherit(bodyFlow); } else { let tcond = condFlow.getTempLocal(Type.bool); - bodyStmts.push(module.local_set(tcond.index, condExpr)); + bodyStmts.push( + module.local_set(tcond.index, condExpr) + ); this.performAutoreleases(condFlow, bodyStmts); - bodyStmts.push(module.br(continueLabel, module.local_get(tcond.index, NativeType.I32))); + bodyStmts.push( + module.br(continueLabel, + module.local_get(tcond.index, NativeType.I32) + ) + ); condFlow.freeTempLocal(tcond); flow.inherit(condFlow); @@ -2012,7 +2024,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = outerFlow; var expr = module.block(breakLabel, [ module.loop(continueLabel, - module.block(null, bodyStmts) + module.flatten(bodyStmts) ) ]); if (flow.is(FlowFlags.TERMINATES)) { @@ -2117,7 +2129,7 @@ export class Compiler extends DiagnosticEmitter { outerFlow.inherit(flow); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; - return flatten(module, stmts, NativeType.None); + return module.flatten(stmts); } } else { condExpr = module.i32(1); @@ -2196,14 +2208,14 @@ export class Compiler extends DiagnosticEmitter { } loopStmts.push( module.if(module.local_get(tcond.index, NativeType.I32), - module.block(null, ifStmts) + module.flatten(ifStmts) ) ); stmts.push( module.block(breakLabel, [ module.loop(loopLabel, - module.block(null, loopStmts) + module.flatten(loopStmts) ) ]) ); @@ -2229,7 +2241,7 @@ export class Compiler extends DiagnosticEmitter { outerFlow.inherit(flow); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; - return flatten(module, stmts, NativeType.None); + return module.flatten(stmts); } compileIfStatement( @@ -2322,8 +2334,8 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = flow; flow.inheritMutual(thenFlow, elseFlow); return module.if(condExpr, - flatten(module, thenStmts, NativeType.None), - flatten(module, elseStmts, NativeType.None) + module.flatten(thenStmts), + module.flatten(elseStmts) ); } else { flow.inheritBranch(thenFlow); @@ -2333,7 +2345,7 @@ export class Compiler extends DiagnosticEmitter { : thenFlow // must become nonnull in thenFlow otherwise ); return module.if(condExpr, - flatten(module, thenStmts, NativeType.None) + module.flatten(thenStmts) ); } } @@ -2418,7 +2430,7 @@ export class Compiler extends DiagnosticEmitter { if (isLastInBody && expr && returnType != Type.void) { if (!stmts.length) return expr; stmts.push(expr); - return module.block(null, stmts, returnType.toNativeType()); + return module.flatten(stmts, returnType.toNativeType()); } // When inlining, break to the end of the inlined function's block (no need to wrap) @@ -2426,13 +2438,13 @@ export class Compiler extends DiagnosticEmitter { if (!stmts.length) return module.br(assert(flow.inlineReturnLabel), 0, expr); stmts.push(module.br(assert(flow.inlineReturnLabel), 0, expr)); // stmts.push(module.createUnreachable()); - return module.block(null, stmts); + return module.flatten(stmts); } // Otherwise emit a normal return if (!stmts.length) return module.return(expr); stmts.push(module.return(expr)); - return module.block(null, stmts); + return module.flatten(stmts); } compileSwitchStatement( @@ -2569,7 +2581,7 @@ export class Compiler extends DiagnosticEmitter { } stmts.push(compileAbort(this, message, statement)); - return flatten(this.module, stmts, NativeType.None); + return this.module.flatten(stmts); } compileTryStatement( @@ -2790,7 +2802,7 @@ export class Compiler extends DiagnosticEmitter { } return initializers.length == 0 ? 0 - : flatten(module, initializers, NativeType.None); + : module.flatten(initializers); } compileVoidStatement( @@ -2855,19 +2867,23 @@ export class Compiler extends DiagnosticEmitter { // Shortcut if condition is always false (body never runs) if (condKind == ConditionKind.FALSE) { - assert(!condFlow.hasScopedLocals); + stmts.push( + module.drop(condExpr) + ); + this.performAutoreleases(condFlow, stmts); assert(!flow.hasScopedLocals); - outerFlow.inheritNonnullIfFalse(condExpr); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; - return module.nop(); + return module.flatten(stmts); } // From here on condition is either always true or unknown // Store condition result in a temp while we autorelease var tcond = flow.getTempLocal(Type.bool); - stmts.push(module.local_set(tcond.index, condExpr)); + stmts.push( + module.local_set(tcond.index, condExpr) + ); this.performAutoreleases(condFlow, stmts); condFlow.freeScopedLocals(); @@ -2888,16 +2904,22 @@ export class Compiler extends DiagnosticEmitter { // Check if body terminates if (bodyFlow.is(FlowFlags.TERMINATES)) { - bodyStmts.push(module.unreachable()); + bodyStmts.push( + module.unreachable() + ); if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); else flow.inheritBranch(bodyFlow); } else { let breaks = bodyFlow.is(FlowFlags.BREAKS); if (breaks) { - bodyStmts.push(module.unreachable()); + bodyStmts.push( + module.unreachable() + ); } else { this.performAutoreleases(bodyFlow, bodyStmts); - bodyStmts.push(module.br(continueLabel)); + bodyStmts.push( + module.br(continueLabel) + ); } if (condKind == ConditionKind.TRUE) flow.inherit(bodyFlow); else flow.inheritBranch(bodyFlow); @@ -2915,7 +2937,7 @@ export class Compiler extends DiagnosticEmitter { } stmts.push( module.if(module.local_get(tcond.index, NativeType.I32), - module.block(null, bodyStmts) + module.flatten(bodyStmts) ) ); flow.freeTempLocal(tcond); @@ -2937,7 +2959,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = outerFlow; var expr = module.block(breakLabel, [ module.loop(continueLabel, - module.block(null, stmts) + module.flatten(stmts) ) ]); if (condKind == ConditionKind.TRUE && flow.is(FlowFlags.TERMINATES)) { @@ -5992,7 +6014,7 @@ export class Compiler extends DiagnosticEmitter { } flow.set(FlowFlags.ALLOCATES | FlowFlags.CALLS_SUPER); this.currentType = Type.void; - return module.block(null, stmts); + return module.flatten(stmts); } // otherwise resolve normally @@ -6569,7 +6591,7 @@ export class Compiler extends DiagnosticEmitter { trampolineSignature.nativeParams, trampolineSignature.nativeResults, typesToNativeTypes(trampoline.additionalLocals), - module.block(null, stmts, returnType.toNativeType()) + module.flatten(stmts, returnType.toNativeType()) ); trampoline.finalize(module, funcRef); return trampoline; @@ -6819,22 +6841,22 @@ export class Compiler extends DiagnosticEmitter { ); var lengthBefore = stmts.length; this.performAutoreleases(flow, stmts, finalize); + var module = this.module; if (stmts.length > lengthBefore) { let nativeType = valueType.toNativeType(); let temp = flow.getTempLocal(valueType); if (!flow.canOverflow(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); if (flow.isNonnull(valueExpr, valueType)) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - let module = this.module; stmts[lengthBefore - 1] = module.local_set(temp.index, valueExpr); // nop -> set stmts.push( module.local_get(temp.index, nativeType) // append get ); - let ret = module.block(null, stmts, nativeType); + let ret = module.flatten(stmts, nativeType); flow.freeTempLocal(temp); return ret; } else if (stmts.length > 1) { stmts[lengthBefore - 1] = valueExpr; // nop -> value - return this.module.block(null, stmts, valueType.toNativeType()); + return module.flatten(stmts, valueType.toNativeType()); } return valueExpr; } @@ -7128,7 +7150,7 @@ export class Compiler extends DiagnosticEmitter { ); } exprs[numExpressions] = this.compileExpression(expressions[numExpressions], contextualType, constraints); - return this.module.block(null, exprs, this.currentType.toNativeType()); + return this.module.flatten(exprs, this.currentType.toNativeType()); } compileElementAccessExpression( @@ -7386,7 +7408,7 @@ export class Compiler extends DiagnosticEmitter { module.local_get(thisLocal.index, nativeSizeType) ); this.currentType = thisLocal.type; - return module.block(null, stmts, nativeSizeType); + return module.flatten(stmts, nativeSizeType); } } // if not a constructor, `this` type can differ @@ -7933,7 +7955,7 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempThis); flow.freeTempLocal(tempDataStart); this.currentType = arrayType; - return module.block(null, stmts, nativeArrayType); + return module.flatten(stmts, nativeArrayType); } compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef { @@ -8022,7 +8044,7 @@ export class Compiler extends DiagnosticEmitter { exprs[exprs.length - 1] = module.local_get(tempLocal.index, this.options.nativeSizeType); this.currentType = classReference.type; - return module.block(null, exprs, this.options.nativeSizeType); + return module.flatten(exprs, this.options.nativeSizeType); } compileNewExpression( @@ -9508,29 +9530,9 @@ function mangleImportName( var mangleImportName_moduleName: string; var mangleImportName_elementName: string; -/** Flattens a series of expressions to a nop, a single statement or a block depending on statement count. */ -export function flatten(module: Module, stmts: ExpressionRef[], type: NativeType): ExpressionRef { - var length = stmts.length; - if (length == 0) return module.nop(); // usually filtered out again - if (length == 1) { - let single = stmts[0]; - switch (getExpressionId(single)) { - case ExpressionId.Return: - case ExpressionId.Throw: - case ExpressionId.Unreachable: { - // type does no matter, terminates anyway - return single; - } - } - let singleType = getExpressionType(single); - assert(singleType == NativeType.Unreachable || singleType == type); - return single; - } - return module.block(null, stmts, type); -} - /** Evaluates the kind of a condition from its expression. */ function evaluateConditionKind(expr: ExpressionRef): ConditionKind { + // TODO: String(""), Number(0) ? if (getExpressionId(expr) == ExpressionId.Const) { assert(getExpressionType(expr) == NativeType.I32); return getConstValueI32(expr) diff --git a/src/module.ts b/src/module.ts index 4b0e0cae67..78da2e4e80 100644 --- a/src/module.ts +++ b/src/module.ts @@ -701,6 +701,30 @@ export class Module { return ret; } + /** Attempts to trivially flatten a series of expressions instead of emitting a block. */ + flatten( + stmts: ExpressionRef[], + type: NativeType = NativeType.None + ): ExpressionRef { + var length = stmts.length; + if (length == 0) return this.nop(); // usually filtered out again + if (length == 1) { + let single = stmts[0]; + switch (getExpressionId(single)) { + case ExpressionId.Return: + case ExpressionId.Throw: + case ExpressionId.Unreachable: { + // type does no matter, terminates anyway + return single; + } + } + let singleType = getExpressionType(single); + assert(singleType == NativeType.Unreachable || singleType == type); + return single; + } + return this.block(null, stmts, type); + } + br( label: string | null, condition: ExpressionRef = 0, From 0764cc6abcc9146fdbe7eac9cc8898dbe7426607 Mon Sep 17 00:00:00 2001 From: dcode Date: Wed, 8 Jan 2020 16:20:15 +0100 Subject: [PATCH 07/19] fix array literal autorelease leak --- src/compiler.ts | 66 +- tests/compiler/infer-array.untouched.wat | 78 +- tests/compiler/resolve-access.untouched.wat | 11 +- .../compiler/std/array-literal.optimized.wat | 53 +- tests/compiler/std/array-literal.ts | 6 + .../compiler/std/array-literal.untouched.wat | 55 +- tests/compiler/std/array.optimized.wat | 1004 +++++---- tests/compiler/std/array.untouched.wat | 1802 +++++++---------- tests/compiler/std/string.optimized.wat | 2 +- tests/compiler/std/string.untouched.wat | 2 +- 10 files changed, 1363 insertions(+), 1716 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 10aedf3572..a72af90f3e 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -774,6 +774,7 @@ export class Compiler extends DiagnosticEmitter { this.compileTopLevelStatement(statements[i], startFunctionBody); } this.finishAutoreleases(flow, startFunctionBody); + // No need to insert (unreachable), last statement should have done that this.currentFlow = previousFlow; this.currentBody = previousBody; @@ -784,15 +785,12 @@ export class Compiler extends DiagnosticEmitter { let numLocals = locals.length; let varTypes = new Array(numLocals); for (let i = 0; i < numLocals; ++i) varTypes[i] = locals[i].type.toNativeType(); - module.addFunction( startFunction.internalName, startSignature.nativeParams, startSignature.nativeResults, varTypes, - startFunctionBody.length > 1 - ? module.flatten(startFunctionBody) - : startFunctionBody[0] + module.flatten(startFunctionBody) ); previousBody.push( module.call(startFunction.internalName, null, NativeType.None) @@ -808,7 +806,6 @@ export class Compiler extends DiagnosticEmitter { var module = this.module; var initExpr: ExpressionRef = 0; - var initAutoreleaseSkipped: bool = false; var typeNode = global.typeNode; var initializerNode = global.initializerNode; @@ -818,13 +815,10 @@ export class Compiler extends DiagnosticEmitter { if (typeNode) { let resolvedType = this.resolver.resolveType(typeNode, global.parent); // reports if (!resolvedType) return false; - if (resolvedType == Type.void) { - this.error( - DiagnosticCode.Type_expected, - typeNode.range - ); - return false; - } + assert( + resolvedType != Type.void && + resolvedType != Type.auto + ); global.setType(resolvedType); // Otherwise infer type from initializer @@ -836,7 +830,6 @@ export class Compiler extends DiagnosticEmitter { initExpr = this.compileExpression(initializerNode, Type.auto, // reports Constraints.MUST_WRAP | Constraints.WILL_RETAIN ); - if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true; this.currentFlow = previousFlow; if (this.currentType == Type.void) { this.error( @@ -910,15 +903,16 @@ export class Compiler extends DiagnosticEmitter { initExpr = this.compileExpression(initializerNode, type, Constraints.CONV_IMPLICIT | Constraints.MUST_WRAP | Constraints.WILL_RETAIN | Constraints.PREFER_STATIC ); - if (this.skippedAutoreleases.has(initExpr)) initAutoreleaseSkipped = true; this.currentFlow = previousFlow; } // If not a constant, attempt to precompute if (getExpressionId(initExpr) != ExpressionId.Const) { if (isDeclaredConstant) { + let origInitExpr = initExpr; initExpr = module.precomputeExpression(initExpr); if (getExpressionId(initExpr) != ExpressionId.Const) initializeInStart = true; + if (this.skippedAutoreleases.has(origInitExpr)) this.skippedAutoreleases.add(initExpr); } else { initializeInStart = true; } @@ -994,7 +988,7 @@ export class Compiler extends DiagnosticEmitter { ); } module.addGlobal(internalName, nativeType, true, this.makeZero(type)); - if (type.isManaged && !initAutoreleaseSkipped) initExpr = this.makeRetain(initExpr); + if (type.isManaged && !this.skippedAutoreleases.has(initExpr)) initExpr = this.makeRetain(initExpr); this.currentBody.push( module.global_set(internalName, initExpr) ); @@ -7885,7 +7879,15 @@ export class Compiler extends DiagnosticEmitter { : module.i32(i64_low(bufferAddress)) ], reportNode); this.currentType = arrayType; - return this.makeAutorelease(this.makeRetain(expr), arrayType); + expr = this.makeRetain(expr); + if (arrayType.isManaged) { + if (!(constraints & Constraints.WILL_RETAIN)) { + expr = this.makeAutorelease(expr, arrayType); + } else { + this.skippedAutoreleases.add(expr); + } + } + return expr; } } @@ -7907,16 +7909,18 @@ export class Compiler extends DiagnosticEmitter { // tempThis = makeArray(length, alignLog2, classId, source = 0) stmts.push( module.local_set(tempThis.index, - this.makeCallDirect(program.allocArrayInstance, [ - module.i32(length), - program.options.isWasm64 - ? module.i64(elementType.alignLog2) - : module.i32(elementType.alignLog2), - module.i32(arrayInstance.id), - program.options.isWasm64 - ? module.i64(0) - : module.i32(0) - ], reportNode), + this.makeRetain( + this.makeCallDirect(program.allocArrayInstance, [ + module.i32(length), + program.options.isWasm64 + ? module.i64(elementType.alignLog2) + : module.i32(elementType.alignLog2), + module.i32(arrayInstance.id), + program.options.isWasm64 + ? module.i64(0) + : module.i32(0) + ], reportNode) + ) ) ); // tempData = tempThis.dataStart @@ -7955,7 +7959,15 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempThis); flow.freeTempLocal(tempDataStart); this.currentType = arrayType; - return module.flatten(stmts, nativeArrayType); + var expr = module.flatten(stmts, nativeArrayType); + if (arrayType.isManaged) { + if (!(constraints & Constraints.WILL_RETAIN)) { + expr = this.makeAutorelease(expr, arrayType, this.currentFlow); + } else { + this.skippedAutoreleases.add(expr); + } + } + return expr; } compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef { diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 3d6e349786..a1daeae303 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -1618,24 +1618,16 @@ i32.const 32 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain - local.set $0 + local.set $1 local.get $1 call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release i32.const 3 i32.const 3 i32.const 4 i32.const 176 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain local.set $0 - local.get $1 - call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release i32.const 2 @@ -1644,10 +1636,8 @@ i32.const 224 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + local.set $1 + local.get $1 i32.const 1 call $~lib/array/Array#__get i32.const -1 @@ -1663,19 +1653,13 @@ end local.get $1 call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release i32.const 3 i32.const 3 i32.const 4 i32.const 304 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain local.set $0 - local.get $1 - call $~lib/rt/stub/__release local.get $0 call $~lib/rt/stub/__release i32.const 3 @@ -1684,47 +1668,43 @@ i32.const 352 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + local.set $1 + local.get $1 i32.const 1 call $~lib/array/Array#__get local.set $2 local.get $1 call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release i32.const 0 call $infer-array/Ref#constructor - local.set $0 + local.set $1 i32.const 0 call $infer-array/Ref#constructor - local.set $1 + local.set $0 i32.const 2 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/stub/__retain local.set $3 local.get $3 i32.load offset=4 local.set $4 local.get $4 - local.get $0 + local.get $1 call $~lib/rt/stub/__retain i32.store local.get $4 - local.get $1 + local.get $0 call $~lib/rt/stub/__retain i32.store offset=4 local.get $3 - call $~lib/rt/stub/__retain local.set $4 - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release local.get $3 @@ -1740,57 +1720,57 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.set $1 - local.get $1 - i32.load offset=4 + call $~lib/rt/stub/__retain local.set $0 local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 local.get $3 call $~lib/rt/stub/__retain i32.store - local.get $0 + local.get $1 local.get $4 call $~lib/rt/stub/__retain i32.store offset=4 - local.get $1 - call $~lib/rt/stub/__retain - local.set $0 + local.get $0 + local.set $1 local.get $3 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $0 - call $~lib/rt/stub/__release local.get $1 call $~lib/rt/stub/__release + local.get $0 + call $~lib/rt/stub/__release i32.const 0 call $infer-array/Ref#constructor - local.set $1 + local.set $0 i32.const 2 i32.const 2 i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.set $0 - local.get $0 + call $~lib/rt/stub/__retain + local.set $1 + local.get $1 i32.load offset=4 local.set $4 local.get $4 - local.get $1 + local.get $0 call $~lib/rt/stub/__retain i32.store local.get $4 i32.const 0 call $~lib/rt/stub/__retain i32.store offset=4 - local.get $0 - call $~lib/rt/stub/__retain - local.set $4 local.get $1 + local.set $4 + local.get $0 call $~lib/rt/stub/__release local.get $4 call $~lib/rt/stub/__release - local.get $0 + local.get $1 call $~lib/rt/stub/__release ) (func $start (; 20 ;) diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 5bd9c2de2e..00febf3a0f 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -1959,26 +1959,21 @@ (func $resolve-access/arrayAccess (; 17 ;) (result i32) (local $0 i32) (local $1 i32) - (local $2 i32) i32.const 1 i32.const 3 i32.const 3 i32.const 32 call $~lib/rt/__allocArray call $~lib/rt/stub/__retain - local.tee $1 - call $~lib/rt/stub/__retain - local.set $0 - local.get $0 + local.set $1 + local.get $1 i32.const 0 call $~lib/array/Array#__get call $~lib/number/U64#toString - local.set $2 + local.set $0 local.get $1 call $~lib/rt/stub/__release local.get $0 - call $~lib/rt/stub/__release - local.get $2 ) (func $resolve-access/Container#constructor (; 18 ;) (param $0 i32) (result i32) local.get $0 diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index bdeaad1624..1b5bacd86f 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -7,6 +7,7 @@ (type $none_=>_i32 (func (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) @@ -1593,31 +1594,31 @@ end end ) - (func $~lib/rt/__allocArray (; 26 ;) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/__allocArray (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) i32.const 16 - local.get $1 + local.get $2 call $~lib/rt/tlsf/__alloc - local.tee $1 - i32.const 3 + local.tee $2 local.get $0 + local.get $1 i32.shl - local.tee $0 + local.tee $1 i32.const 0 call $~lib/rt/tlsf/__alloc - local.tee $2 + local.tee $3 call $~lib/rt/pure/__retain i32.store - local.get $1 local.get $2 + local.get $3 i32.store offset=4 + local.get $2 local.get $1 - local.get $0 i32.store offset=8 - local.get $1 - i32.const 3 + local.get $2 + local.get $0 i32.store offset=12 - local.get $1 + local.get $2 ) (func $std/array-literal/Ref#constructor (; 27 ;) (result i32) i32.const 0 @@ -1851,6 +1852,7 @@ (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) i32.const 76 i32.load i32.const 3 @@ -1959,9 +1961,11 @@ call $~lib/builtins/abort unreachable end + i32.const 3 i32.const 0 i32.const 3 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 @@ -1982,7 +1986,6 @@ global.get $std/array-literal/i i32.store8 offset=2 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 i32.load offset=12 @@ -2035,9 +2038,11 @@ end i32.const 0 global.set $std/array-literal/i + i32.const 3 i32.const 2 i32.const 4 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 @@ -2058,7 +2063,6 @@ global.get $std/array-literal/i i32.store offset=8 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 i32.load offset=12 @@ -2109,9 +2113,11 @@ call $~lib/builtins/abort unreachable end + i32.const 3 i32.const 2 i32.const 6 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 @@ -2130,7 +2136,6 @@ call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef i32.load offset=12 @@ -2144,9 +2149,11 @@ call $~lib/builtins/abort unreachable end + i32.const 3 i32.const 2 i32.const 8 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.tee $0 @@ -2165,7 +2172,6 @@ call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor i32.load offset=12 @@ -2187,6 +2193,21 @@ call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRefWithCtor call $~lib/rt/pure/__release + i32.const 1 + i32.const 2 + i32.const 6 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.tee $1 + i32.load offset=4 + call $std/array-literal/Ref#constructor + local.tee $7 + call $~lib/rt/pure/__retain + i32.store + local.get $7 + call $~lib/rt/pure/__release + local.get $1 + call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $3 diff --git a/tests/compiler/std/array-literal.ts b/tests/compiler/std/array-literal.ts index f7ddcb3bb7..5d85019d68 100644 --- a/tests/compiler/std/array-literal.ts +++ b/tests/compiler/std/array-literal.ts @@ -43,3 +43,9 @@ __release(changetype(dynamicArrayI8)); __release(changetype(dynamicArrayI32)); __release(changetype(dynamicArrayRef)); __release(changetype(dynamicArrayRefWithCtor)); + +// Make sure unassigned literals don't +function doesntLeak(refs: Ref[]): void {} +{ + doesntLeak([ new Ref() ]); +} diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index c1bcf5390b..72da4370b8 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -3458,7 +3458,14 @@ call $~lib/rt/pure/decrement end ) - (func $start:std/array-literal (; 42 ;) + (func $std/array-literal/doesntLeak (; 42 ;) (param $0 i32) + local.get $0 + call $~lib/rt/pure/__retain + local.set $0 + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:std/array-literal (; 43 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -3467,6 +3474,7 @@ (local $5 i32) (local $6 i32) (local $7 i32) + (local $8 i32) i32.const 64 call $~lib/array/Array#get:length i32.const 3 @@ -3595,6 +3603,7 @@ i32.const 3 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -3617,7 +3626,6 @@ global.get $std/array-literal/i i32.store8 offset=2 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI8 global.get $std/array-literal/dynamicArrayI8 call $~lib/array/Array#get:length @@ -3681,6 +3689,7 @@ i32.const 4 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.set $0 local.get $0 i32.load offset=4 @@ -3703,7 +3712,6 @@ global.get $std/array-literal/i i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayI32 global.get $std/array-literal/dynamicArrayI32 call $~lib/array/Array#get:length @@ -3765,6 +3773,7 @@ i32.const 6 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.set $1 local.get $1 i32.load offset=4 @@ -3788,7 +3797,6 @@ call $~lib/rt/pure/__retain i32.store offset=8 local.get $1 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRef global.get $std/array-literal/dynamicArrayRef call $~lib/array/Array#get:length @@ -3808,6 +3816,7 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.set $0 local.get $0 i32.load offset=4 @@ -3831,7 +3840,6 @@ call $~lib/rt/pure/__retain i32.store offset=8 local.get $0 - call $~lib/rt/pure/__retain global.set $std/array-literal/dynamicArrayRefWithCtor global.get $std/array-literal/dynamicArrayRefWithCtor call $~lib/array/Array#get:length @@ -3856,6 +3864,29 @@ call $~lib/rt/pure/__release global.get $std/array-literal/dynamicArrayRefWithCtor call $~lib/rt/pure/__release + i32.const 1 + i32.const 2 + i32.const 6 + i32.const 0 + call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 + i32.load offset=4 + local.set $0 + local.get $0 + i32.const 0 + call $std/array-literal/Ref#constructor + local.tee $8 + call $~lib/rt/pure/__retain + i32.store + local.get $1 + local.tee $0 + call $std/array-literal/doesntLeak + local.get $8 + call $~lib/rt/pure/__release + local.get $0 + call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $3 @@ -3869,18 +3900,18 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $start (; 43 ;) + (func $start (; 44 ;) call $start:std/array-literal ) - (func $~lib/array/Array#__visit_impl (; 44 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) i32.const 0 drop ) - (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 46 ;) (param $0 i32) (param $1 i32) i32.const 0 drop ) - (func $~lib/rt/pure/__visit (; 46 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 47 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -4014,7 +4045,7 @@ end end ) - (func $~lib/array/Array#__visit_impl (; 47 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 48 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4055,7 +4086,7 @@ end end ) - (func $~lib/array/Array#__visit_impl (; 48 ;) (param $0 i32) (param $1 i32) + (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -4096,7 +4127,7 @@ end end ) - (func $~lib/rt/__visit_members (; 49 ;) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 50 ;) (param $0 i32) (param $1 i32) (local $2 i32) block $block$4$break block $switch$1$default diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 72091d858c..139908105b 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -10846,20 +10846,6 @@ (local $60 i32) (local $61 i32) (local $62 i32) - (local $63 i32) - (local $64 i32) - (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) i32.const 0 call $~lib/array/Array#constructor global.set $std/array/arr @@ -10882,7 +10868,7 @@ i32.const 1 i32.const 0 call $~lib/arraybuffer/ArrayBufferView#constructor - local.set $2 + local.set $1 global.get $std/array/arr call $~lib/array/Array.isArray<~lib/array/Array | null> i32.eqz @@ -10895,7 +10881,7 @@ unreachable end call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release i32.const 5 i32.const 0 @@ -10903,7 +10889,6 @@ i32.const 496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 local.tee $0 i32.const 1 i32.const 1 @@ -10917,7 +10902,7 @@ i32.const 528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $1 call $std/array/isArraysEqual i32.eqz if @@ -10941,7 +10926,7 @@ i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $4 call $std/array/isArraysEqual i32.eqz if @@ -10965,7 +10950,7 @@ i32.const 640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $6 call $std/array/isArraysEqual i32.eqz if @@ -10989,7 +10974,7 @@ i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 call $std/array/isArraysEqual i32.eqz if @@ -11013,7 +10998,7 @@ i32.const 704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $3 call $std/array/isArraysEqual i32.eqz if @@ -11024,25 +11009,24 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release i32.const 5 i32.const 2 i32.const 7 i32.const 736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 local.tee $0 i32.const 1 i32.const 1 @@ -11056,7 +11040,7 @@ i32.const 784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11081,7 +11065,7 @@ i32.const 832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $4 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11106,7 +11090,7 @@ i32.const 880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11131,7 +11115,7 @@ i32.const 928 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11156,7 +11140,7 @@ i32.const 976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 + local.tee $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11168,18 +11152,18 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $0 - call $~lib/rt/pure/__release global.get $std/array/arr i32.load offset=12 if @@ -11438,23 +11422,22 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $0 i32.load offset=4 - local.tee $2 + local.tee $1 i32.const 0 call $std/array/Ref#constructor local.tee $4 call $~lib/rt/pure/__retain i32.store - local.get $2 + local.get $1 i32.const 0 call $std/array/Ref#constructor - local.tee $2 + local.tee $1 call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 - call $~lib/rt/pure/__retain - local.tee $0 call $~lib/array/Array#set:length local.get $0 i32.load offset=12 @@ -11468,15 +11451,15 @@ end local.get $4 call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release i32.const 0 call $~lib/array/Array#constructor - local.set $2 + local.set $1 global.get $std/array/arr - local.get $2 + local.get $1 call $~lib/array/Array#concat local.set $4 global.get $std/array/arr @@ -11522,7 +11505,7 @@ i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 call $~lib/array/Array#concat call $~lib/rt/pure/__release global.get $std/array/arr @@ -11576,14 +11559,14 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 46 call $~lib/array/Array#push - local.get $2 + local.get $1 i32.const 47 call $~lib/array/Array#push global.get $std/array/arr - local.get $2 + local.get $1 call $~lib/array/Array#concat local.set $0 local.get $4 @@ -11600,7 +11583,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load offset=12 i32.const 2 i32.ne @@ -11711,8 +11694,6 @@ call $~lib/rt/__allocArray call $~lib/rt/pure/__retain local.tee $4 - local.set $7 - local.get $4 i32.load offset=12 if i32.const 0 @@ -11722,13 +11703,13 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 global.get $std/array/arr call $~lib/array/Array#concat - local.set $1 + local.set $6 local.get $0 call $~lib/rt/pure/__release - local.get $1 + local.get $6 i32.load offset=12 i32.const 3 i32.ne @@ -11740,7 +11721,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 i32.load offset=12 if i32.const 0 @@ -11750,11 +11731,11 @@ call $~lib/builtins/abort unreachable end - local.get $2 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $3 + local.get $6 + call $~lib/rt/pure/__release + local.get $2 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release @@ -11769,14 +11750,14 @@ i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $2 + local.tee $4 i32.const 5 i32.const 2 i32.const 3 i32.const 1152 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11794,12 +11775,15 @@ i32.const 1200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $1 + local.tee $2 i32.const 5 i32.const 2 i32.const 3 @@ -11824,19 +11808,21 @@ i32.const 1296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $10 + local.tee $5 i32.const 5 i32.const 2 i32.const 3 i32.const 1344 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11854,19 +11840,21 @@ i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $6 + local.tee $8 i32.const 5 i32.const 2 i32.const 3 i32.const 1440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.tee $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11884,19 +11872,21 @@ i32.const 1488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $16 + local.tee $10 i32.const 5 i32.const 2 i32.const 3 i32.const 1536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 + local.tee $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11914,19 +11904,21 @@ i32.const 1584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $13 + local.tee $12 i32.const 5 i32.const 2 i32.const 3 i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11944,19 +11936,21 @@ i32.const 1680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $35 + local.tee $14 i32.const 5 i32.const 2 i32.const 3 i32.const 1728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 + local.tee $25 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -11974,19 +11968,21 @@ i32.const 1776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $21 + local.tee $16 i32.const 5 i32.const 2 i32.const 3 i32.const 1824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12004,19 +12000,21 @@ i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $24 + local.tee $18 i32.const 5 i32.const 2 i32.const 3 i32.const 1920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $19 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12034,19 +12032,21 @@ i32.const 1968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.get $1 + call $~lib/rt/pure/__release + local.tee $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.tee $29 + local.tee $20 i32.const 5 i32.const 2 i32.const 3 i32.const 2016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $30 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12064,19 +12064,22 @@ i32.const 2064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $32 + local.tee $21 i32.const 5 i32.const 2 i32.const 3 i32.const 2112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $33 + local.tee $22 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12094,19 +12097,22 @@ i32.const 2160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $26 + local.tee $0 i32.const 5 i32.const 2 i32.const 3 i32.const 2208 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $23 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -12118,77 +12124,55 @@ call $~lib/builtins/abort unreachable end - local.get $0 - call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $6 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release + local.get $5 + call $~lib/rt/pure/__release + local.get $7 + call $~lib/rt/pure/__release local.get $8 call $~lib/rt/pure/__release + local.get $9 + call $~lib/rt/pure/__release local.get $10 call $~lib/rt/pure/__release - local.get $9 + local.get $11 call $~lib/rt/pure/__release - local.get $5 + local.get $12 call $~lib/rt/pure/__release - local.get $6 + local.get $13 call $~lib/rt/pure/__release local.get $14 call $~lib/rt/pure/__release - local.get $15 + local.get $25 call $~lib/rt/pure/__release local.get $16 call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release local.get $17 call $~lib/rt/pure/__release - local.get $13 + local.get $18 call $~lib/rt/pure/__release local.get $19 call $~lib/rt/pure/__release local.get $20 call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $11 - call $~lib/rt/pure/__release - local.get $18 + local.get $15 call $~lib/rt/pure/__release local.get $21 call $~lib/rt/pure/__release local.get $22 call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $33 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 + local.get $0 call $~lib/rt/pure/__release - local.get $34 + local.get $23 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 42 @@ -12782,7 +12766,7 @@ i32.const 2288 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 call $~lib/array/Array#indexOf i32.const -1 i32.ne @@ -12796,7 +12780,7 @@ end local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 44 @@ -12957,7 +12941,7 @@ i32.const 2352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 call $~lib/array/Array#includes i32.eqz if @@ -13025,7 +13009,7 @@ end local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -13033,19 +13017,18 @@ i32.const 2384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 - local.get $1 + local.tee $0 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $18 + local.tee $5 i32.const 5 i32.const 2 i32.const 3 i32.const 2432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13057,13 +13040,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 0 i32.const 2 i32.const 3 i32.const 2480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13081,19 +13065,21 @@ i32.const 2496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 - local.get $3 + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.const 0 i32.const 0 call $~lib/array/Array#splice - local.tee $23 + local.tee $9 i32.const 0 i32.const 2 i32.const 3 i32.const 2544 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $10 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13105,13 +13091,14 @@ call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 2560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13129,19 +13116,21 @@ i32.const 2608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 - local.get $8 + local.set $0 + local.get $1 + call $~lib/rt/pure/__release + local.get $0 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $28 + local.tee $12 i32.const 3 i32.const 2 i32.const 3 i32.const 2656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13153,13 +13142,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 2 i32.const 2 i32.const 3 i32.const 2688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $30 + local.tee $14 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13177,19 +13167,20 @@ i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 - local.get $10 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $31 + local.tee $16 i32.const 2 i32.const 2 i32.const 3 i32.const 2768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13201,13 +13192,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 3 i32.const 2 i32.const 3 i32.const 2800 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $33 + local.tee $18 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13225,19 +13217,20 @@ i32.const 2832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 - local.get $9 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.tee $25 + local.tee $19 i32.const 1 i32.const 2 i32.const 3 i32.const 2880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $26 + local.tee $20 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13249,13 +13242,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 4 i32.const 2 i32.const 3 i32.const 2912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13273,19 +13267,20 @@ i32.const 2944 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 - local.get $5 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $36 + local.tee $21 i32.const 1 i32.const 2 i32.const 3 i32.const 2992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $22 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13297,13 +13292,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 4 i32.const 2 i32.const 3 i32.const 3024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 + local.tee $23 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13321,19 +13317,20 @@ i32.const 3056 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 - local.get $6 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $39 + local.tee $26 i32.const 2 i32.const 2 i32.const 3 i32.const 3104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $27 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13345,13 +13342,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 3 i32.const 2 i32.const 3 i32.const 3136 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $41 + local.tee $28 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13369,19 +13367,20 @@ i32.const 3168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 - local.get $14 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.tee $42 + local.tee $29 i32.const 1 i32.const 2 i32.const 3 i32.const 3216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $30 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13393,13 +13392,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 4 i32.const 2 i32.const 3 i32.const 3248 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $31 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13417,19 +13417,20 @@ i32.const 3280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 - local.get $15 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.tee $45 + local.tee $32 i32.const 1 i32.const 2 i32.const 3 i32.const 3328 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $33 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13441,13 +13442,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 4 i32.const 2 i32.const 3 i32.const 3360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $47 + local.tee $34 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13465,19 +13467,20 @@ i32.const 3392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 - local.get $16 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.tee $48 + local.tee $24 i32.const 0 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13489,13 +13492,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 3456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13513,19 +13517,20 @@ i32.const 3504 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 - local.get $12 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.tee $51 + local.tee $37 i32.const 0 i32.const 2 i32.const 3 i32.const 3552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $52 + local.tee $38 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13537,13 +13542,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 3568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13561,19 +13567,20 @@ i32.const 3616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 - local.get $17 + local.get $0 + call $~lib/rt/pure/__release + local.tee $0 i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.tee $54 + local.tee $40 i32.const 0 i32.const 2 i32.const 3 i32.const 3664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $55 + local.tee $41 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13585,13 +13592,14 @@ call $~lib/builtins/abort unreachable end + local.get $0 i32.const 5 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $56 + local.tee $42 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13609,19 +13617,21 @@ i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 - local.get $13 + local.set $1 + local.get $0 + call $~lib/rt/pure/__release + local.get $1 i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.tee $57 + local.tee $43 i32.const 0 i32.const 2 i32.const 3 i32.const 3776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13633,13 +13643,14 @@ call $~lib/builtins/abort unreachable end + local.get $1 i32.const 5 i32.const 2 i32.const 3 i32.const 3792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $59 + local.tee $45 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13657,19 +13668,21 @@ i32.const 3840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 - local.get $19 + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.tee $60 + local.tee $46 i32.const 0 i32.const 2 i32.const 3 i32.const 3888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $61 + local.tee $47 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13681,13 +13694,14 @@ call $~lib/builtins/abort unreachable end + local.get $2 i32.const 5 i32.const 2 i32.const 3 i32.const 3904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $62 + local.tee $48 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -13705,12 +13719,10 @@ i32.const 3952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 - local.set $4 - local.get $20 + local.tee $4 i32.const 1 call $~lib/array/Array#splice - local.tee $7 + local.tee $3 i32.load offset=12 if i32.const 0 @@ -13735,53 +13747,48 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.tee $2 + call $~lib/rt/pure/__retain + local.tee $1 i32.load offset=4 local.tee $0 i32.const 1 call $std/array/Ref#constructor - local.tee $63 + local.tee $49 call $~lib/rt/pure/__retain i32.store local.get $0 i32.const 2 call $std/array/Ref#constructor - local.tee $64 + local.tee $50 call $~lib/rt/pure/__retain i32.store offset=4 local.get $0 i32.const 3 call $std/array/Ref#constructor - local.tee $65 + local.tee $51 call $~lib/rt/pure/__retain i32.store offset=8 local.get $0 i32.const 4 call $std/array/Ref#constructor - local.tee $66 + local.tee $52 call $~lib/rt/pure/__retain i32.store offset=12 local.get $0 i32.const 5 call $std/array/Ref#constructor - local.tee $67 + local.tee $53 call $~lib/rt/pure/__retain i32.store offset=16 - local.get $2 local.get $4 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - end - local.get $2 + call $~lib/rt/pure/__release + local.get $1 i32.const 2 call $~lib/array/Array#splice - local.set $4 - local.get $7 + local.set $6 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $6 i32.load offset=12 i32.const 2 i32.ne @@ -13793,10 +13800,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 0 call $~lib/array/Array#__get - local.tee $68 + local.tee $54 i32.load i32.const 3 i32.ne @@ -13808,10 +13815,10 @@ call $~lib/builtins/abort unreachable end - local.get $4 + local.get $6 i32.const 1 call $~lib/array/Array#__get - local.tee $69 + local.tee $55 i32.load i32.const 4 i32.ne @@ -13823,7 +13830,7 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.load offset=12 i32.const 3 i32.ne @@ -13835,10 +13842,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 0 call $~lib/array/Array#__get - local.tee $70 + local.tee $56 i32.load i32.const 1 i32.ne @@ -13850,10 +13857,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 1 call $~lib/array/Array#__get - local.tee $71 + local.tee $57 i32.load i32.const 2 i32.ne @@ -13865,10 +13872,10 @@ call $~lib/builtins/abort unreachable end - local.get $2 + local.get $1 i32.const 2 call $~lib/array/Array#__get - local.tee $72 + local.tee $58 i32.load i32.const 5 i32.ne @@ -13885,12 +13892,13 @@ i32.const 11 i32.const 0 call $~lib/rt/__allocArray - local.tee $7 + call $~lib/rt/pure/__retain + local.tee $4 i32.load offset=4 local.tee $0 i32.const 1 call $std/array/Ref#constructor - local.tee $73 + local.tee $59 call $~lib/rt/pure/__retain i32.store local.get $0 @@ -13899,14 +13907,12 @@ local.get $0 i32.const 2 call $std/array/Ref#constructor - local.tee $74 + local.tee $60 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $7 - call $~lib/rt/pure/__retain - local.tee $7 + local.get $4 call $~lib/array/Array#splice - local.tee $35 + local.tee $25 i32.load offset=12 i32.const 1 i32.ne @@ -13918,7 +13924,7 @@ call $~lib/builtins/abort unreachable end - local.get $35 + local.get $25 i32.const 0 call $~lib/array/Array#__get local.tee $0 @@ -13938,7 +13944,7 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 i32.load offset=12 i32.const 2 i32.ne @@ -13950,10 +13956,10 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 i32.const 0 call $~lib/array/Array#__get - local.tee $75 + local.tee $61 if i32.const 0 i32.const 416 @@ -13962,11 +13968,11 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $4 i32.const 1 call $~lib/array/Array#__get - local.tee $11 - local.get $11 + local.tee $3 + local.get $3 i32.eqz if unreachable @@ -13982,47 +13988,65 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $18 + local.get $5 call $~lib/rt/pure/__release - local.get $21 + local.get $7 call $~lib/rt/pure/__release - local.get $22 + local.get $8 call $~lib/rt/pure/__release - local.get $3 + local.get $9 call $~lib/rt/pure/__release - local.get $23 + local.get $10 call $~lib/rt/pure/__release - local.get $24 + local.get $11 call $~lib/rt/pure/__release - local.get $27 + local.get $12 call $~lib/rt/pure/__release - local.get $8 + local.get $13 call $~lib/rt/pure/__release - local.get $28 + local.get $14 call $~lib/rt/pure/__release - local.get $29 + local.get $16 call $~lib/rt/pure/__release - local.get $30 + local.get $17 call $~lib/rt/pure/__release - local.get $10 + local.get $18 call $~lib/rt/pure/__release - local.get $31 + local.get $19 call $~lib/rt/pure/__release - local.get $32 + local.get $20 call $~lib/rt/pure/__release - local.get $33 + local.get $15 call $~lib/rt/pure/__release - local.get $9 + local.get $21 call $~lib/rt/pure/__release - local.get $25 + local.get $22 + call $~lib/rt/pure/__release + local.get $23 call $~lib/rt/pure/__release local.get $26 call $~lib/rt/pure/__release + local.get $27 + call $~lib/rt/pure/__release + local.get $28 + call $~lib/rt/pure/__release + local.get $29 + call $~lib/rt/pure/__release + local.get $30 + call $~lib/rt/pure/__release + local.get $31 + call $~lib/rt/pure/__release + local.get $32 + call $~lib/rt/pure/__release + local.get $33 + call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release - local.get $5 + local.get $24 + call $~lib/rt/pure/__release + local.get $35 call $~lib/rt/pure/__release local.get $36 call $~lib/rt/pure/__release @@ -14030,101 +14054,55 @@ call $~lib/rt/pure/__release local.get $38 call $~lib/rt/pure/__release - local.get $6 - call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release local.get $40 call $~lib/rt/pure/__release local.get $41 call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release local.get $42 call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release local.get $44 call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release local.get $45 call $~lib/rt/pure/__release local.get $46 call $~lib/rt/pure/__release local.get $47 call $~lib/rt/pure/__release - local.get $16 - call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release local.get $49 call $~lib/rt/pure/__release local.get $50 call $~lib/rt/pure/__release - local.get $12 - call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release - local.get $17 - call $~lib/rt/pure/__release local.get $54 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release local.get $57 call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release local.get $59 call $~lib/rt/pure/__release - local.get $19 - call $~lib/rt/pure/__release local.get $60 call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $74 - call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $75 + local.get $61 call $~lib/rt/pure/__release - local.get $11 + local.get $3 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 0 @@ -15174,20 +15152,20 @@ i32.const 4320 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 + local.set $2 i32.const 0 global.set $~lib/argc - local.get $1 + local.get $2 call $~lib/array/Array#sort call $~lib/rt/pure/__release - local.get $1 + local.get $2 i32.const 8 i32.const 2 i32.const 9 i32.const 4368 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 + local.tee $18 call $std/array/isArraysEqual i32.eqz if @@ -15217,7 +15195,7 @@ i32.const 4496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.tee $19 call $std/array/isArraysEqual i32.eqz if @@ -15234,21 +15212,21 @@ i32.const 4576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $8 + local.set $5 i32.const 0 global.set $~lib/argc - local.get $8 + local.get $5 i32.const 46 call $~lib/array/Array#sort call $~lib/rt/pure/__release - local.get $8 + local.get $5 i32.const 5 i32.const 2 i32.const 3 i32.const 4624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 + local.tee $20 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15266,21 +15244,21 @@ i32.const 4672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $10 + local.set $7 i32.const 0 global.set $~lib/argc - local.get $10 + local.get $7 i32.const 47 call $~lib/array/Array#sort call $~lib/rt/pure/__release - local.get $10 + local.get $7 i32.const 5 i32.const 2 i32.const 7 i32.const 4720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15305,58 +15283,55 @@ i32.const 4784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $9 + local.set $8 i32.const 2 i32.const 2 i32.const 3 i32.const 4816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 - local.set $12 + local.set $9 i32.const 4 i32.const 2 i32.const 3 i32.const 4848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 - local.set $17 + local.set $10 i32.const 4 i32.const 2 i32.const 3 i32.const 4880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 local.set $0 i32.const 64 call $std/array/createReverseOrderedArray - local.set $5 + local.set $11 i32.const 128 call $std/array/createReverseOrderedArray - local.set $6 + local.set $12 i32.const 1024 call $std/array/createReverseOrderedArray - local.set $14 + local.set $13 i32.const 10000 call $std/array/createReverseOrderedArray - local.set $15 + local.set $14 i32.const 512 call $std/array/createRandomOrderedArray - local.set $13 + local.set $17 local.get $16 call $std/array/assertSortedDefault - local.get $9 + local.get $8 call $std/array/assertSortedDefault - local.get $9 + local.get $8 i32.const 1 i32.const 2 i32.const 3 i32.const 4976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $21 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15368,16 +15343,16 @@ call $~lib/builtins/abort unreachable end - local.get $12 + local.get $9 call $std/array/assertSortedDefault - local.get $12 + local.get $9 i32.const 2 i32.const 2 i32.const 3 i32.const 5008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 + local.tee $22 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -15389,9 +15364,9 @@ call $~lib/builtins/abort unreachable end - local.get $17 + local.get $10 call $std/array/assertSortedDefault - local.get $17 + local.get $10 local.get $0 i32.const 0 call $std/array/isArraysEqual @@ -15404,9 +15379,9 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $11 call $std/array/assertSortedDefault - local.get $5 + local.get $11 local.get $0 i32.const 4 call $std/array/isArraysEqual @@ -15419,9 +15394,9 @@ call $~lib/builtins/abort unreachable end - local.get $6 + local.get $12 call $std/array/assertSortedDefault - local.get $6 + local.get $12 local.get $0 i32.const 4 call $std/array/isArraysEqual @@ -15434,9 +15409,9 @@ call $~lib/builtins/abort unreachable end - local.get $14 + local.get $13 call $std/array/assertSortedDefault - local.get $14 + local.get $13 local.get $0 i32.const 4 call $std/array/isArraysEqual @@ -15449,9 +15424,9 @@ call $~lib/builtins/abort unreachable end - local.get $15 + local.get $14 call $std/array/assertSortedDefault - local.get $15 + local.get $14 local.get $0 i32.const 4 call $std/array/isArraysEqual @@ -15464,69 +15439,69 @@ call $~lib/builtins/abort unreachable end - local.get $13 + local.get $17 call $std/array/assertSortedDefault - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $19 + local.get $18 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $20 + local.get $19 call $~lib/rt/pure/__release - local.get $8 + local.get $5 call $~lib/rt/pure/__release - local.get $11 + local.get $20 call $~lib/rt/pure/__release - local.get $10 + local.get $7 call $~lib/rt/pure/__release - local.get $18 + local.get $15 call $~lib/rt/pure/__release local.get $16 call $~lib/rt/pure/__release + local.get $8 + call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release - local.get $21 + local.get $10 call $~lib/rt/pure/__release - local.get $22 + local.get $0 call $~lib/rt/pure/__release - local.get $23 + local.get $11 call $~lib/rt/pure/__release - local.get $5 + local.get $12 call $~lib/rt/pure/__release - local.get $6 + local.get $13 call $~lib/rt/pure/__release local.get $14 call $~lib/rt/pure/__release - local.get $15 - call $~lib/rt/pure/__release - local.get $13 + local.get $17 call $~lib/rt/pure/__release - local.get $24 + local.get $21 call $~lib/rt/pure/__release - local.get $12 + local.get $22 call $~lib/rt/pure/__release i32.const 64 call $std/array/createRandomOrderedArray local.set $0 i32.const 257 call $std/array/createRandomOrderedArray - local.set $1 + local.set $2 local.get $0 i32.const 49 call $std/array/assertSorted local.get $0 i32.const 50 call $std/array/assertSorted - local.get $1 + local.get $2 i32.const 51 call $std/array/assertSorted - local.get $1 + local.get $2 i32.const 52 call $std/array/assertSorted local.get $0 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release call $std/array/createReverseOrderedNestedArray local.tee $0 @@ -15546,7 +15521,7 @@ i32.const 5184 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $1 + local.set $2 i32.const 7 i32.const 2 i32.const 15 @@ -15556,9 +15531,9 @@ local.set $3 i32.const 1 global.set $~lib/argc - local.get $1 + local.get $2 call $std/array/assertSorted<~lib/string/String | null> - local.get $1 + local.get $2 local.get $3 call $std/array/isArraysEqual<~lib/string/String | null> i32.eqz @@ -15577,7 +15552,7 @@ local.get $0 i32.const 56 call $std/array/assertSorted<~lib/array/Array> - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -15594,8 +15569,8 @@ local.get $0 i32.load offset=12 call $~lib/util/string/joinBooleanArray - local.tee $1 - local.get $1 + local.tee $2 + local.get $2 i32.const 5440 call $~lib/string/String.__eq i32.eqz @@ -15613,7 +15588,7 @@ i32.const 5488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $8 i32.const 5168 call $~lib/array/Array#join local.tee $9 @@ -15634,10 +15609,10 @@ i32.const 5584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $10 i32.const 5616 call $~lib/array/Array#join - local.tee $6 + local.tee $11 i32.const 5552 call $~lib/string/String.__eq i32.eqz @@ -15655,10 +15630,10 @@ i32.const 5648 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.tee $12 i32.const 5680 call $~lib/array/Array#join - local.tee $15 + local.tee $13 i32.const 5712 call $~lib/string/String.__eq i32.eqz @@ -15676,13 +15651,13 @@ i32.const 5776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $2 i32.load offset=4 - local.get $1 + local.get $2 i32.load offset=12 call $~lib/util/string/joinFloatArray local.tee $3 - local.set $16 + local.set $14 local.get $3 i32.const 7088 call $~lib/string/String.__eq @@ -15701,7 +15676,7 @@ i32.const 7216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 + local.tee $16 i32.const 5168 call $~lib/array/Array<~lib/string/String | null>#join local.tee $17 @@ -15721,26 +15696,25 @@ i32.const 11 i32.const 0 call $~lib/rt/__allocArray - local.tee $13 - i32.load offset=4 + call $~lib/rt/pure/__retain local.tee $3 + i32.load offset=4 + local.tee $5 i32.const 0 call $std/array/Ref#constructor - local.tee $19 + local.tee $18 call $~lib/rt/pure/__retain i32.store - local.get $3 + local.get $5 i32.const 0 i32.store offset=4 - local.get $3 + local.get $5 i32.const 0 call $std/array/Ref#constructor - local.tee $3 + local.tee $19 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $13 - call $~lib/rt/pure/__retain - local.tee $13 + local.get $3 call $~lib/array/Array#join local.tee $20 i32.const 7296 @@ -15759,23 +15733,22 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.tee $11 + call $~lib/rt/pure/__retain + local.tee $5 i32.load offset=4 - local.tee $18 + local.tee $15 i32.const 0 call $std/array/Ref#constructor local.tee $21 call $~lib/rt/pure/__retain i32.store - local.get $18 + local.get $15 i32.const 0 call $std/array/Ref#constructor - local.tee $18 + local.tee $15 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $11 - call $~lib/rt/pure/__retain - local.tee $11 + local.get $5 call $~lib/array/Array#join local.tee $22 i32.const 7376 @@ -15792,39 +15765,39 @@ local.get $0 call $~lib/rt/pure/__release call $~lib/rt/pure/__release - local.get $10 + local.get $8 call $~lib/rt/pure/__release local.get $9 call $~lib/rt/pure/__release - local.get $5 + local.get $10 call $~lib/rt/pure/__release - local.get $6 + local.get $11 call $~lib/rt/pure/__release - local.get $14 + local.get $12 call $~lib/rt/pure/__release - local.get $15 + local.get $13 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release - local.get $16 + local.get $14 call $~lib/rt/pure/__release - local.get $12 + local.get $16 call $~lib/rt/pure/__release local.get $17 call $~lib/rt/pure/__release + local.get $18 + call $~lib/rt/pure/__release local.get $19 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $13 - call $~lib/rt/pure/__release local.get $20 call $~lib/rt/pure/__release local.get $21 call $~lib/rt/pure/__release - local.get $18 + local.get $15 call $~lib/rt/pure/__release - local.get $11 + local.get $5 call $~lib/rt/pure/__release local.get $22 call $~lib/rt/pure/__release @@ -15834,33 +15807,31 @@ i32.const 7456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.set $0 + local.set $5 i32.const 1 i32.const 2 i32.const 3 i32.const 7472 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.set $7 i32.const 2 i32.const 2 i32.const 3 i32.const 7504 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 - local.set $3 + local.set $8 i32.const 4 i32.const 2 i32.const 3 i32.const 7536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 - local.set $8 - local.get $0 + local.set $9 + local.get $5 call $~lib/array/Array#toString - local.tee $12 + local.tee $16 i32.const 5168 call $~lib/string/String.__eq i32.eqz @@ -15872,6 +15843,7 @@ call $~lib/builtins/abort unreachable end + local.get $7 call $~lib/array/Array#toString local.tee $17 i32.const 7184 @@ -15885,9 +15857,9 @@ call $~lib/builtins/abort unreachable end - local.get $3 + local.get $8 call $~lib/array/Array#toString - local.tee $13 + local.tee $18 i32.const 7568 call $~lib/string/String.__eq i32.eqz @@ -15899,7 +15871,7 @@ call $~lib/builtins/abort unreachable end - local.get $8 + local.get $9 call $~lib/array/Array#toString local.tee $19 i32.const 7600 @@ -15919,13 +15891,13 @@ i32.const 7632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $10 i32.load offset=4 - local.get $1 + local.get $10 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $3 - local.get $3 + local.tee $0 + local.get $0 i32.const 7664 call $~lib/string/String.__eq i32.eqz @@ -15943,14 +15915,14 @@ i32.const 7696 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $11 i32.load offset=4 - local.get $3 + local.get $11 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $8 - local.set $11 - local.get $8 + local.tee $0 + local.set $15 + local.get $0 i32.const 7728 call $~lib/string/String.__eq i32.eqz @@ -15968,14 +15940,14 @@ i32.const 7776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $12 i32.load offset=4 - local.get $8 + local.get $12 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $10 - local.set $18 - local.get $10 + local.tee $0 + local.set $21 + local.get $0 i32.const 7824 call $~lib/string/String.__eq i32.eqz @@ -15993,14 +15965,14 @@ i32.const 7888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $13 i32.load offset=4 - local.get $10 + local.get $13 i32.load offset=12 call $~lib/util/string/joinIntegerArray - local.tee $9 - local.set $21 - local.get $9 + local.tee $0 + local.set $22 + local.get $0 i32.const 7936 call $~lib/string/String.__eq i32.eqz @@ -16018,9 +15990,9 @@ i32.const 8048 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 - call $~lib/array/Array<~lib/string/String | null>#toString local.tee $23 + call $~lib/array/Array<~lib/string/String | null>#toString + local.tee $26 i32.const 8096 call $~lib/string/String.__eq i32.eqz @@ -16038,9 +16010,9 @@ i32.const 8208 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 - call $~lib/array/Array<~lib/string/String | null>#toString local.tee $27 + call $~lib/array/Array<~lib/string/String | null>#toString + local.tee $28 i32.const 8240 call $~lib/string/String.__eq i32.eqz @@ -16057,38 +16029,37 @@ i32.const 12 i32.const 0 call $~lib/rt/__allocArray - local.tee $9 + call $~lib/rt/pure/__retain + local.tee $0 i32.load offset=4 - local.tee $5 + local.tee $2 i32.const 2 i32.const 2 i32.const 3 i32.const 8272 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $29 call $~lib/rt/pure/__retain i32.store - local.get $5 + local.get $2 i32.const 2 i32.const 2 i32.const 3 i32.const 8304 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $30 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $9 - call $~lib/rt/pure/__retain - local.tee $9 + local.get $0 i32.load offset=4 - local.get $9 + local.get $0 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $5 - local.set $30 - local.get $5 + local.tee $2 + local.set $31 + local.get $2 i32.const 8336 call $~lib/string/String.__eq i32.eqz @@ -16105,38 +16076,37 @@ i32.const 23 i32.const 0 call $~lib/rt/__allocArray - local.tee $5 + call $~lib/rt/pure/__retain + local.tee $2 i32.load offset=4 - local.tee $6 + local.tee $3 i32.const 2 i32.const 0 i32.const 6 i32.const 8368 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 + local.tee $32 call $~lib/rt/pure/__retain i32.store - local.get $6 + local.get $3 i32.const 2 i32.const 0 i32.const 6 i32.const 8400 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $33 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $5 - call $~lib/rt/pure/__retain - local.tee $5 + local.get $2 i32.load offset=4 - local.get $5 + local.get $2 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array> - local.tee $6 - local.set $33 - local.get $6 + local.tee $3 + local.set $34 + local.get $3 i32.const 8336 call $~lib/string/String.__eq i32.eqz @@ -16153,14 +16123,16 @@ i32.const 25 i32.const 0 call $~lib/rt/__allocArray - local.tee $6 + call $~lib/rt/pure/__retain + local.tee $3 i32.load offset=4 i32.const 1 i32.const 2 i32.const 24 i32.const 0 call $~lib/rt/__allocArray - local.tee $26 + call $~lib/rt/pure/__retain + local.tee $14 i32.load offset=4 i32.const 1 i32.const 2 @@ -16168,22 +16140,20 @@ i32.const 8432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $35 call $~lib/rt/pure/__retain i32.store - local.get $26 + local.get $14 call $~lib/rt/pure/__retain i32.store - local.get $6 - call $~lib/rt/pure/__retain - local.tee $6 + local.get $3 i32.load offset=4 - local.get $6 + local.get $3 i32.load offset=12 call $~lib/util/string/joinReferenceArray<~lib/array/Array<~lib/array/Array>> - local.tee $25 - local.set $26 - local.get $25 + local.tee $24 + local.set $36 + local.get $24 i32.const 7184 call $~lib/string/String.__eq i32.eqz @@ -16195,42 +16165,40 @@ call $~lib/builtins/abort unreachable end - local.get $0 + local.get $5 call $~lib/rt/pure/__release - local.get $14 + local.get $7 call $~lib/rt/pure/__release - local.get $15 + local.get $8 call $~lib/rt/pure/__release - local.get $16 + local.get $9 call $~lib/rt/pure/__release - local.get $12 + local.get $16 call $~lib/rt/pure/__release local.get $17 call $~lib/rt/pure/__release - local.get $13 + local.get $18 call $~lib/rt/pure/__release local.get $19 call $~lib/rt/pure/__release - local.get $1 - call $~lib/rt/pure/__release + local.get $10 call $~lib/rt/pure/__release - local.get $3 call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release - local.get $8 - call $~lib/rt/pure/__release - local.get $18 + local.get $15 call $~lib/rt/pure/__release - local.get $10 + local.get $12 call $~lib/rt/pure/__release local.get $21 call $~lib/rt/pure/__release + local.get $13 + call $~lib/rt/pure/__release local.get $22 call $~lib/rt/pure/__release local.get $23 call $~lib/rt/pure/__release - local.get $24 + local.get $26 call $~lib/rt/pure/__release local.get $27 call $~lib/rt/pure/__release @@ -16248,23 +16216,27 @@ call $~lib/rt/pure/__release local.get $34 call $~lib/rt/pure/__release - local.get $26 + local.get $35 + call $~lib/rt/pure/__release + local.get $14 + call $~lib/rt/pure/__release + local.get $36 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release - local.get $4 + local.get $6 call $~lib/rt/pure/__release - local.get $7 + local.get $4 call $~lib/rt/pure/__release - local.get $35 + local.get $25 call $~lib/rt/pure/__release - local.get $9 + local.get $0 call $~lib/rt/pure/__release - local.get $5 + local.get $2 call $~lib/rt/pure/__release - local.get $6 + local.get $3 call $~lib/rt/pure/__release ) (func $start (; 203 ;) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 1cef377c32..c803359178 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -18754,21 +18754,6 @@ (local $63 i32) (local $64 i32) (local $65 i32) - (local $66 i32) - (local $67 i32) - (local $68 i32) - (local $69 i32) - (local $70 i32) - (local $71 i32) - (local $72 i32) - (local $73 i32) - (local $74 i32) - (local $75 i32) - (local $76 i32) - (local $77 i32) - (local $78 i32) - (local $79 i32) - (local $80 i32) i32.const 0 i32.const 0 call $~lib/array/Array#constructor @@ -18860,23 +18845,21 @@ i32.const 496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $0 - call $~lib/rt/pure/__retain - local.set $1 - local.get $1 + local.set $0 + local.get $0 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 6 i32.const 528 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18888,20 +18871,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 6 i32.const 608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18913,20 +18896,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 6 i32.const 640 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $5 + local.tee $4 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18938,20 +18921,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 2 i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 6 i32.const 672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 + local.tee $5 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18963,20 +18946,20 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $0 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $1 + local.get $0 i32.const 5 i32.const 0 i32.const 6 i32.const 704 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $7 + local.tee $6 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -18990,7 +18973,7 @@ end local.get $0 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -19000,24 +18983,20 @@ call $~lib/rt/pure/__release local.get $6 call $~lib/rt/pure/__release - local.get $7 - call $~lib/rt/pure/__release i32.const 5 i32.const 2 i32.const 7 i32.const 736 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 - call $~lib/rt/pure/__retain - local.set $7 - local.get $7 + local.set $5 + local.get $5 i32.const 1 i32.const 1 i32.const 3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $7 + local.get $5 i32.const 5 i32.const 2 i32.const 7 @@ -19036,13 +19015,13 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.const 0 i32.const 0 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $7 + local.get $5 i32.const 5 i32.const 2 i32.const 7 @@ -19061,20 +19040,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.const 1 i32.const 0 i32.const -3 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $7 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 + local.tee $2 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19086,13 +19065,13 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.const 2 i32.const -2 global.get $~lib/builtins/i32.MAX_VALUE call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $7 + local.get $5 i32.const 5 i32.const 2 i32.const 7 @@ -19111,20 +19090,20 @@ call $~lib/builtins/abort unreachable end - local.get $7 + local.get $5 i32.const 0 i32.const 1 i32.const 0 call $~lib/array/Array#fill call $~lib/rt/pure/__release - local.get $7 + local.get $5 i32.const 5 i32.const 2 i32.const 7 i32.const 976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19136,19 +19115,17 @@ call $~lib/builtins/abort unreachable end - local.get $6 - call $~lib/rt/pure/__release - local.get $7 + local.get $5 call $~lib/rt/pure/__release local.get $4 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $2 + local.get $1 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/array/Array#get:length @@ -19222,8 +19199,8 @@ end global.get $std/array/arr call $~lib/array/Array#pop - local.set $2 - local.get $2 + local.set $1 + local.get $1 i32.const 42 i32.eq i32.eqz @@ -19440,15 +19417,16 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.set $2 - local.get $2 + call $~lib/rt/pure/__retain + local.set $1 + local.get $1 i32.load offset=4 local.set $0 local.get $0 i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $1 + local.tee $2 call $~lib/rt/pure/__retain i32.store local.get $0 @@ -19458,8 +19436,7 @@ local.tee $3 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $2 - call $~lib/rt/pure/__retain + local.get $1 local.set $0 local.get $0 i32.const 0 @@ -19477,7 +19454,7 @@ call $~lib/builtins/abort unreachable end - local.get $1 + local.get $2 call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release @@ -19537,7 +19514,7 @@ i32.const 1072 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $2 + local.tee $1 call $~lib/array/Array#concat call $~lib/rt/pure/__release global.get $std/array/arr @@ -19606,10 +19583,10 @@ global.get $std/array/arr local.get $0 call $~lib/array/Array#concat - local.set $5 + local.set $6 local.get $3 call $~lib/rt/pure/__release - local.get $5 + local.get $6 local.set $3 global.get $std/array/arr call $std/array/internalCapacity @@ -19742,10 +19719,8 @@ i32.const 1088 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 + local.set $2 + local.get $2 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -19758,13 +19733,13 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 global.get $std/array/arr call $~lib/array/Array#concat - local.set $6 + local.set $5 local.get $3 call $~lib/rt/pure/__release - local.get $6 + local.get $5 local.set $3 local.get $3 call $~lib/array/Array#get:length @@ -19779,7 +19754,7 @@ call $~lib/builtins/abort unreachable end - local.get $5 + local.get $2 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -19796,11 +19771,9 @@ call $~lib/rt/pure/__release local.get $3 call $~lib/rt/pure/__release - local.get $2 - call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $5 + local.get $2 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -19808,10 +19781,8 @@ i32.const 1104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $1 - call $~lib/rt/pure/__retain - local.set $5 - local.get $5 + local.set $1 + local.get $1 i32.const 0 i32.const 3 i32.const 2147483647 @@ -19841,33 +19812,24 @@ i32.const 1200 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $6 - local.tee $7 - local.get $5 - local.tee $3 - i32.ne - if - local.get $7 - call $~lib/rt/pure/__retain - local.set $7 - local.get $3 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $5 - local.get $5 + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + local.set $1 + local.get $1 i32.const 1 i32.const 3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $7 + local.tee $4 i32.const 5 i32.const 2 i32.const 3 i32.const 1248 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $4 + local.tee $3 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19885,33 +19847,24 @@ i32.const 1296 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 - local.tee $3 - local.get $5 - local.tee $9 - i32.ne - if - local.get $3 - call $~lib/rt/pure/__retain - local.set $3 - local.get $9 - call $~lib/rt/pure/__release - end - local.get $3 local.set $5 + local.get $1 + call $~lib/rt/pure/__release local.get $5 + local.set $1 + local.get $1 i32.const 1 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $3 + local.tee $5 i32.const 5 i32.const 2 i32.const 3 i32.const 1344 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 + local.tee $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19929,33 +19882,24 @@ i32.const 1392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 - local.tee $9 - local.get $5 - local.tee $12 - i32.ne - if - local.get $9 - call $~lib/rt/pure/__retain - local.set $9 - local.get $12 - call $~lib/rt/pure/__release - end - local.get $9 - local.set $5 - local.get $5 + local.set $6 + local.get $1 + call $~lib/rt/pure/__release + local.get $6 + local.set $1 + local.get $1 i32.const 2 i32.const 2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $9 + local.tee $6 i32.const 5 i32.const 2 i32.const 3 i32.const 1440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 + local.tee $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -19973,33 +19917,24 @@ i32.const 1488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 - local.tee $12 - local.get $5 - local.tee $15 - i32.ne - if - local.get $12 - call $~lib/rt/pure/__retain - local.set $12 - local.get $15 - call $~lib/rt/pure/__release - end - local.get $12 - local.set $5 - local.get $5 + local.set $8 + local.get $1 + call $~lib/rt/pure/__release + local.get $8 + local.set $1 + local.get $1 i32.const 0 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $12 + local.tee $8 i32.const 5 i32.const 2 i32.const 3 i32.const 1536 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 + local.tee $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20017,33 +19952,24 @@ i32.const 1584 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 - local.tee $15 - local.get $5 - local.tee $18 - i32.ne - if - local.get $15 - call $~lib/rt/pure/__retain - local.set $15 - local.get $18 - call $~lib/rt/pure/__release - end - local.get $15 - local.set $5 - local.get $5 + local.set $10 + local.get $1 + call $~lib/rt/pure/__release + local.get $10 + local.set $1 + local.get $1 i32.const 1 i32.const 3 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $15 + local.tee $10 i32.const 5 i32.const 2 i32.const 3 i32.const 1632 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20061,33 +19987,24 @@ i32.const 1680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 - local.tee $18 - local.get $5 - local.tee $21 - i32.ne - if - local.get $18 - call $~lib/rt/pure/__retain - local.set $18 - local.get $21 - call $~lib/rt/pure/__release - end - local.get $18 - local.set $5 - local.get $5 + local.set $12 + local.get $1 + call $~lib/rt/pure/__release + local.get $12 + local.set $1 + local.get $1 i32.const 1 i32.const 2 i32.const 4 call $~lib/array/Array#copyWithin - local.tee $18 + local.tee $12 i32.const 5 i32.const 2 i32.const 3 i32.const 1728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20105,33 +20022,24 @@ i32.const 1776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 - local.tee $21 - local.get $5 - local.tee $24 - i32.ne - if - local.get $21 - call $~lib/rt/pure/__retain - local.set $21 - local.get $24 - call $~lib/rt/pure/__release - end - local.get $21 - local.set $5 - local.get $5 + local.set $14 + local.get $1 + call $~lib/rt/pure/__release + local.get $14 + local.set $1 + local.get $1 i32.const 0 i32.const -2 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $21 + local.tee $14 i32.const 5 i32.const 2 i32.const 3 i32.const 1824 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20149,33 +20057,24 @@ i32.const 1872 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $26 - local.tee $24 - local.get $5 - local.tee $27 - i32.ne - if - local.get $24 - call $~lib/rt/pure/__retain - local.set $24 - local.get $27 - call $~lib/rt/pure/__release - end - local.get $24 - local.set $5 - local.get $5 + local.set $16 + local.get $1 + call $~lib/rt/pure/__release + local.get $16 + local.set $1 + local.get $1 i32.const 0 i32.const -2 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $24 + local.tee $16 i32.const 5 i32.const 2 i32.const 3 i32.const 1920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 + local.tee $19 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20193,33 +20092,24 @@ i32.const 1968 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 - local.tee $27 - local.get $5 - local.tee $30 - i32.ne - if - local.get $27 - call $~lib/rt/pure/__retain - local.set $27 - local.get $30 - call $~lib/rt/pure/__release - end - local.get $27 - local.set $5 - local.get $5 + local.set $18 + local.get $1 + call $~lib/rt/pure/__release + local.get $18 + local.set $1 + local.get $1 i32.const -4 i32.const -3 i32.const -2 call $~lib/array/Array#copyWithin - local.tee $27 + local.tee $18 i32.const 5 i32.const 2 i32.const 3 i32.const 2016 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 + local.tee $21 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20237,33 +20127,24 @@ i32.const 2064 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 - local.tee $30 - local.get $5 - local.tee $33 - i32.ne - if - local.get $30 - call $~lib/rt/pure/__retain - local.set $30 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $30 - local.set $5 - local.get $5 + local.set $20 + local.get $1 + call $~lib/rt/pure/__release + local.get $20 + local.set $1 + local.get $1 i32.const -4 i32.const -3 i32.const -1 call $~lib/array/Array#copyWithin - local.tee $30 + local.tee $20 i32.const 5 i32.const 2 i32.const 3 i32.const 2112 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $23 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20281,33 +20162,24 @@ i32.const 2160 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 - local.tee $33 - local.get $5 - local.tee $36 - i32.ne - if - local.get $33 - call $~lib/rt/pure/__retain - local.set $33 - local.get $36 - call $~lib/rt/pure/__release - end - local.get $33 - local.set $5 - local.get $5 + local.set $22 + local.get $1 + call $~lib/rt/pure/__release + local.get $22 + local.set $1 + local.get $1 i32.const -4 i32.const -3 i32.const 2147483647 call $~lib/array/Array#copyWithin - local.tee $33 + local.tee $22 i32.const 5 i32.const 2 i32.const 3 i32.const 2208 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $25 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -20321,77 +20193,53 @@ end local.get $1 call $~lib/rt/pure/__release - local.get $5 - call $~lib/rt/pure/__release local.get $2 call $~lib/rt/pure/__release local.get $0 call $~lib/rt/pure/__release - local.get $6 + local.get $4 call $~lib/rt/pure/__release - local.get $7 + local.get $3 call $~lib/rt/pure/__release - local.get $4 + local.get $5 call $~lib/rt/pure/__release - local.get $8 + local.get $7 call $~lib/rt/pure/__release - local.get $3 + local.get $6 call $~lib/rt/pure/__release - local.get $10 + local.get $9 + call $~lib/rt/pure/__release + local.get $8 call $~lib/rt/pure/__release local.get $11 call $~lib/rt/pure/__release - local.get $9 + local.get $10 call $~lib/rt/pure/__release local.get $13 call $~lib/rt/pure/__release - local.get $14 - call $~lib/rt/pure/__release local.get $12 call $~lib/rt/pure/__release - local.get $16 + local.get $15 + call $~lib/rt/pure/__release + local.get $14 call $~lib/rt/pure/__release local.get $17 call $~lib/rt/pure/__release - local.get $15 + local.get $16 call $~lib/rt/pure/__release local.get $19 call $~lib/rt/pure/__release - local.get $20 - call $~lib/rt/pure/__release local.get $18 call $~lib/rt/pure/__release - local.get $22 - call $~lib/rt/pure/__release - local.get $23 - call $~lib/rt/pure/__release local.get $21 call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $28 - call $~lib/rt/pure/__release - local.get $29 - call $~lib/rt/pure/__release - local.get $27 - call $~lib/rt/pure/__release - local.get $31 - call $~lib/rt/pure/__release - local.get $32 - call $~lib/rt/pure/__release - local.get $30 - call $~lib/rt/pure/__release - local.get $34 + local.get $20 call $~lib/rt/pure/__release - local.get $35 + local.get $23 call $~lib/rt/pure/__release - local.get $33 + local.get $22 call $~lib/rt/pure/__release - local.get $37 + local.get $25 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 42 @@ -21014,7 +20862,7 @@ i32.const 2256 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $33 + local.tee $22 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#indexOf @@ -21035,7 +20883,7 @@ i32.const 2288 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $35 + local.tee $23 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#indexOf @@ -21050,16 +20898,16 @@ call $~lib/builtins/abort unreachable end - local.get $33 + local.get $22 call $~lib/rt/pure/__release - local.get $35 + local.get $23 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 44 i32.const 0 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21075,8 +20923,8 @@ i32.const 42 i32.const 0 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21092,8 +20940,8 @@ i32.const 45 i32.const 0 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 0 i32.eq i32.eqz @@ -21109,8 +20957,8 @@ i32.const 43 i32.const 100 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 0 i32.eq i32.eqz @@ -21126,8 +20974,8 @@ i32.const 43 i32.const -100 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21143,8 +20991,8 @@ i32.const 43 i32.const -2 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21160,8 +21008,8 @@ i32.const 43 i32.const -4 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21177,8 +21025,8 @@ i32.const 43 i32.const 0 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21194,8 +21042,8 @@ i32.const 43 i32.const 1 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21211,8 +21059,8 @@ i32.const 43 i32.const 2 call $~lib/array/Array#includes - local.set $35 - local.get $35 + local.set $23 + local.get $23 i32.const 1 i32.eq i32.eqz @@ -21230,7 +21078,7 @@ i32.const 2320 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 + local.tee $25 f32.const nan:0x400000 i32.const 0 call $~lib/array/Array#includes @@ -21249,7 +21097,7 @@ i32.const 2352 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $34 + local.tee $20 f64.const nan:0x8000000000000 i32.const 0 call $~lib/array/Array#includes @@ -21321,9 +21169,9 @@ call $~lib/builtins/abort unreachable end - local.get $37 + local.get $25 call $~lib/rt/pure/__release - local.get $34 + local.get $20 call $~lib/rt/pure/__release i32.const 5 i32.const 2 @@ -21331,21 +21179,19 @@ i32.const 2384 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $37 - call $~lib/rt/pure/__retain - local.set $34 - local.get $34 + local.set $25 + local.get $25 i32.const 0 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $35 + local.tee $20 i32.const 5 i32.const 2 i32.const 3 i32.const 2432 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $30 + local.tee $22 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21357,14 +21203,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 0 i32.const 2 i32.const 3 i32.const 2480 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $32 + local.tee $21 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21382,32 +21228,23 @@ i32.const 2496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $31 - local.tee $36 - local.get $34 - local.tee $33 - i32.ne - if - local.get $36 - call $~lib/rt/pure/__retain - local.set $36 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $36 - local.set $34 - local.get $34 - i32.const 0 - i32.const 0 - call $~lib/array/Array#splice - local.tee $36 - i32.const 0 + local.set $24 + local.get $25 + call $~lib/rt/pure/__release + local.get $24 + local.set $25 + local.get $25 + i32.const 0 + i32.const 0 + call $~lib/array/Array#splice + local.tee $24 + i32.const 0 i32.const 2 i32.const 3 i32.const 2544 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $27 + local.tee $23 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21419,14 +21256,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 2560 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $29 + local.tee $19 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21444,21 +21281,12 @@ i32.const 2608 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $28 - local.tee $1 - local.get $34 - local.tee $33 - i32.ne - if - local.get $1 - call $~lib/rt/pure/__retain - local.set $1 - local.get $33 - call $~lib/rt/pure/__release - end + local.set $1 + local.get $25 + call $~lib/rt/pure/__release local.get $1 - local.set $34 - local.get $34 + local.set $25 + local.get $25 i32.const 2 i32.const 2147483647 call $~lib/array/Array#splice @@ -21469,7 +21297,7 @@ i32.const 2656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $24 + local.tee $18 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21481,14 +21309,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 2 i32.const 2 i32.const 3 i32.const 2688 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $26 + local.tee $17 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21506,32 +21334,23 @@ i32.const 2720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $25 - local.tee $5 - local.get $34 - local.tee $33 - i32.ne - if - local.get $5 - call $~lib/rt/pure/__retain - local.set $5 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $5 - local.set $34 - local.get $34 + local.set $2 + local.get $25 + call $~lib/rt/pure/__release + local.get $2 + local.set $25 + local.get $25 i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.tee $5 + local.tee $2 i32.const 2 i32.const 2 i32.const 3 i32.const 2768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $21 + local.tee $16 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21543,14 +21362,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 3 i32.const 2 i32.const 3 i32.const 2800 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $23 + local.tee $15 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21568,32 +21387,23 @@ i32.const 2832 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $22 - local.tee $2 - local.get $34 - local.tee $33 - i32.ne - if - local.get $2 - call $~lib/rt/pure/__retain - local.set $2 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $2 - local.set $34 - local.get $34 + local.set $0 + local.get $25 + call $~lib/rt/pure/__release + local.get $0 + local.set $25 + local.get $25 i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.tee $2 + local.tee $0 i32.const 1 i32.const 2 i32.const 3 i32.const 2880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $18 + local.tee $14 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21605,14 +21415,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 4 i32.const 2 i32.const 3 i32.const 2912 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $20 + local.tee $13 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21630,32 +21440,23 @@ i32.const 2944 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $19 - local.tee $0 - local.get $34 - local.tee $33 - i32.ne - if - local.get $0 - call $~lib/rt/pure/__retain - local.set $0 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $0 - local.set $34 - local.get $34 + local.set $4 + local.get $25 + call $~lib/rt/pure/__release + local.get $4 + local.set $25 + local.get $25 i32.const -1 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $0 + local.tee $4 i32.const 1 i32.const 2 i32.const 3 i32.const 2992 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $15 + local.tee $12 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21667,14 +21468,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 4 i32.const 2 i32.const 3 i32.const 3024 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $17 + local.tee $11 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21692,32 +21493,23 @@ i32.const 3056 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $16 - local.tee $6 - local.get $34 - local.tee $33 - i32.ne - if - local.get $6 - call $~lib/rt/pure/__retain - local.set $6 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $6 - local.set $34 - local.get $34 + local.set $3 + local.get $25 + call $~lib/rt/pure/__release + local.get $3 + local.set $25 + local.get $25 i32.const -2 i32.const 2147483647 call $~lib/array/Array#splice - local.tee $6 + local.tee $3 i32.const 2 i32.const 2 i32.const 3 i32.const 3104 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $12 + local.tee $10 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21729,14 +21521,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 3 i32.const 2 i32.const 3 i32.const 3136 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $14 + local.tee $9 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21754,32 +21546,23 @@ i32.const 3168 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $13 - local.tee $7 - local.get $34 - local.tee $33 - i32.ne - if - local.get $7 - call $~lib/rt/pure/__retain - local.set $7 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $7 - local.set $34 - local.get $34 + local.set $5 + local.get $25 + call $~lib/rt/pure/__release + local.get $5 + local.set $25 + local.get $25 i32.const -2 i32.const 1 call $~lib/array/Array#splice - local.tee $7 + local.tee $5 i32.const 1 i32.const 2 i32.const 3 i32.const 3216 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $9 + local.tee $8 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21791,14 +21574,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 4 i32.const 2 i32.const 3 i32.const 3248 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $11 + local.tee $7 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21816,32 +21599,23 @@ i32.const 3280 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $10 - local.tee $4 - local.get $34 - local.tee $33 - i32.ne - if - local.get $4 - call $~lib/rt/pure/__retain - local.set $4 - local.get $33 - call $~lib/rt/pure/__release - end - local.get $4 - local.set $34 - local.get $34 + local.set $6 + local.get $25 + call $~lib/rt/pure/__release + local.get $6 + local.set $25 + local.get $25 i32.const -7 i32.const 1 call $~lib/array/Array#splice - local.tee $4 + local.tee $6 i32.const 1 i32.const 2 i32.const 3 i32.const 3328 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $3 + local.tee $27 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21853,14 +21627,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 4 i32.const 2 i32.const 3 i32.const 3360 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $28 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21878,32 +21652,23 @@ i32.const 3392 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $38 - local.tee $33 - local.get $34 - local.tee $39 - i32.ne - if - local.get $33 - call $~lib/rt/pure/__retain - local.set $33 - local.get $39 - call $~lib/rt/pure/__release - end - local.get $33 - local.set $34 - local.get $34 + local.set $26 + local.get $25 + call $~lib/rt/pure/__release + local.get $26 + local.set $25 + local.get $25 i32.const -2 i32.const -1 call $~lib/array/Array#splice - local.tee $33 + local.tee $26 i32.const 0 i32.const 2 i32.const 3 i32.const 3440 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $40 + local.tee $30 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21915,14 +21680,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 3456 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $41 + local.tee $31 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21940,32 +21705,23 @@ i32.const 3504 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 - local.tee $39 - local.get $34 - local.tee $43 - i32.ne - if - local.get $39 - call $~lib/rt/pure/__retain - local.set $39 - local.get $43 - call $~lib/rt/pure/__release - end - local.get $39 - local.set $34 - local.get $34 + local.set $29 + local.get $25 + call $~lib/rt/pure/__release + local.get $29 + local.set $25 + local.get $25 i32.const 1 i32.const -2 call $~lib/array/Array#splice - local.tee $39 + local.tee $29 i32.const 0 i32.const 2 i32.const 3 i32.const 3552 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $33 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -21977,14 +21733,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 3568 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $34 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22002,32 +21758,23 @@ i32.const 3616 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 - local.tee $43 - local.get $34 - local.tee $47 - i32.ne - if - local.get $43 - call $~lib/rt/pure/__retain - local.set $43 - local.get $47 - call $~lib/rt/pure/__release - end - local.get $43 - local.set $34 - local.get $34 + local.set $32 + local.get $25 + call $~lib/rt/pure/__release + local.get $32 + local.set $25 + local.get $25 i32.const 4 i32.const 0 call $~lib/array/Array#splice - local.tee $43 + local.tee $32 i32.const 0 i32.const 2 i32.const 3 i32.const 3664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 + local.tee $36 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22039,14 +21786,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 3680 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $49 + local.tee $37 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22064,32 +21811,23 @@ i32.const 3728 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 - local.tee $47 - local.get $34 - local.tee $51 - i32.ne - if - local.get $47 - call $~lib/rt/pure/__retain - local.set $47 - local.get $51 - call $~lib/rt/pure/__release - end - local.get $47 - local.set $34 - local.get $34 + local.set $35 + local.get $25 + call $~lib/rt/pure/__release + local.get $35 + local.set $25 + local.get $25 i32.const 7 i32.const 0 call $~lib/array/Array#splice - local.tee $47 + local.tee $35 i32.const 0 i32.const 2 i32.const 3 i32.const 3776 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $52 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22101,14 +21839,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 3792 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $40 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22126,32 +21864,23 @@ i32.const 3840 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $54 - local.tee $51 - local.get $34 - local.tee $55 - i32.ne - if - local.get $51 - call $~lib/rt/pure/__retain - local.set $51 - local.get $55 - call $~lib/rt/pure/__release - end - local.get $51 - local.set $34 - local.get $34 + local.set $38 + local.get $25 + call $~lib/rt/pure/__release + local.get $38 + local.set $25 + local.get $25 i32.const 7 i32.const 5 call $~lib/array/Array#splice - local.tee $51 + local.tee $38 i32.const 0 i32.const 2 i32.const 3 i32.const 3888 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $56 + local.tee $42 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22163,14 +21892,14 @@ call $~lib/builtins/abort unreachable end - local.get $34 + local.get $25 i32.const 5 i32.const 2 i32.const 3 i32.const 3904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $43 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -22188,15 +21917,13 @@ i32.const 3952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 - call $~lib/rt/pure/__retain - local.set $59 - local.get $59 + local.set $45 + local.get $45 i32.const 1 i32.const 2 call $~lib/array/Array#splice - local.set $60 - local.get $60 + local.set $46 + local.get $46 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -22209,7 +21936,7 @@ call $~lib/builtins/abort unreachable end - local.get $59 + local.get $45 call $~lib/array/Array#get:length i32.const 0 i32.eq @@ -22227,69 +21954,62 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.set $55 - local.get $55 + call $~lib/rt/pure/__retain + local.set $44 + local.get $44 i32.load offset=4 - local.set $61 - local.get $61 + local.set $41 + local.get $41 i32.const 0 i32.const 1 call $std/array/Ref#constructor - local.tee $62 + local.tee $47 call $~lib/rt/pure/__retain i32.store - local.get $61 + local.get $41 i32.const 0 i32.const 2 call $std/array/Ref#constructor - local.tee $63 + local.tee $48 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $61 + local.get $41 i32.const 0 i32.const 3 call $std/array/Ref#constructor - local.tee $64 + local.tee $49 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $61 + local.get $41 i32.const 0 i32.const 4 call $std/array/Ref#constructor - local.tee $65 + local.tee $50 call $~lib/rt/pure/__retain i32.store offset=12 - local.get $61 + local.get $41 i32.const 0 i32.const 5 call $std/array/Ref#constructor - local.tee $66 + local.tee $51 call $~lib/rt/pure/__retain i32.store offset=16 - local.get $55 - local.tee $55 - local.get $59 - local.tee $61 - i32.ne - if - local.get $55 - call $~lib/rt/pure/__retain - local.set $55 - local.get $61 - call $~lib/rt/pure/__release - end - local.get $55 - local.set $59 - local.get $59 + local.get $44 + local.set $44 + local.get $45 + call $~lib/rt/pure/__release + local.get $44 + local.set $45 + local.get $45 i32.const 2 i32.const 2 call $~lib/array/Array#splice - local.set $61 - local.get $60 + local.set $41 + local.get $46 call $~lib/rt/pure/__release - local.get $61 - local.set $60 - local.get $60 + local.get $41 + local.set $46 + local.get $46 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -22302,10 +22022,10 @@ call $~lib/builtins/abort unreachable end - local.get $60 + local.get $46 i32.const 0 call $~lib/array/Array#__get - local.tee $61 + local.tee $41 i32.load i32.const 3 i32.eq @@ -22318,10 +22038,10 @@ call $~lib/builtins/abort unreachable end - local.get $60 + local.get $46 i32.const 1 call $~lib/array/Array#__get - local.tee $55 + local.tee $44 i32.load i32.const 4 i32.eq @@ -22334,7 +22054,7 @@ call $~lib/builtins/abort unreachable end - local.get $59 + local.get $45 call $~lib/array/Array#get:length i32.const 3 i32.eq @@ -22347,10 +22067,10 @@ call $~lib/builtins/abort unreachable end - local.get $59 + local.get $45 i32.const 0 call $~lib/array/Array#__get - local.tee $67 + local.tee $52 i32.load i32.const 1 i32.eq @@ -22363,10 +22083,10 @@ call $~lib/builtins/abort unreachable end - local.get $59 + local.get $45 i32.const 1 call $~lib/array/Array#__get - local.tee $68 + local.tee $53 i32.load i32.const 2 i32.eq @@ -22379,10 +22099,10 @@ call $~lib/builtins/abort unreachable end - local.get $59 + local.get $45 i32.const 2 call $~lib/array/Array#__get - local.tee $69 + local.tee $54 i32.load i32.const 5 i32.eq @@ -22400,37 +22120,37 @@ i32.const 11 i32.const 0 call $~lib/rt/__allocArray - local.set $70 - local.get $70 + call $~lib/rt/pure/__retain + local.set $55 + local.get $55 i32.load offset=4 - local.set $71 - local.get $71 + local.set $56 + local.get $56 i32.const 0 i32.const 1 call $std/array/Ref#constructor - local.tee $72 + local.tee $57 call $~lib/rt/pure/__retain i32.store - local.get $71 + local.get $56 i32.const 0 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $71 + local.get $56 i32.const 0 i32.const 2 call $std/array/Ref#constructor - local.tee $73 + local.tee $58 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $70 - call $~lib/rt/pure/__retain - local.set $74 - local.get $74 + local.get $55 + local.set $59 + local.get $59 i32.const 0 i32.const 1 call $~lib/array/Array#splice - local.set $75 - local.get $75 + local.set $60 + local.get $60 call $~lib/array/Array#get:length i32.const 1 i32.eq @@ -22443,13 +22163,13 @@ call $~lib/builtins/abort unreachable end - local.get $75 + local.get $60 i32.const 0 call $~lib/array/Array#__get - local.tee $71 - local.tee $70 + local.tee $56 + local.tee $55 if (result i32) - local.get $70 + local.get $55 else unreachable end @@ -22465,7 +22185,7 @@ call $~lib/builtins/abort unreachable end - local.get $74 + local.get $59 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -22478,10 +22198,10 @@ call $~lib/builtins/abort unreachable end - local.get $74 + local.get $59 i32.const 0 call $~lib/array/Array#__get - local.tee $70 + local.tee $55 i32.const 0 i32.eq i32.eqz @@ -22493,13 +22213,13 @@ call $~lib/builtins/abort unreachable end - local.get $74 + local.get $59 i32.const 1 call $~lib/array/Array#__get - local.tee $76 - local.tee $77 + local.tee $61 + local.tee $62 if (result i32) - local.get $77 + local.get $62 else unreachable end @@ -22515,107 +22235,105 @@ call $~lib/builtins/abort unreachable end - local.get $37 - call $~lib/rt/pure/__release - local.get $34 - call $~lib/rt/pure/__release - local.get $35 - call $~lib/rt/pure/__release - local.get $30 + local.get $25 call $~lib/rt/pure/__release - local.get $32 + local.get $20 call $~lib/rt/pure/__release - local.get $31 + local.get $22 call $~lib/rt/pure/__release - local.get $36 + local.get $21 call $~lib/rt/pure/__release - local.get $27 + local.get $24 call $~lib/rt/pure/__release - local.get $29 + local.get $23 call $~lib/rt/pure/__release - local.get $28 + local.get $19 call $~lib/rt/pure/__release local.get $1 call $~lib/rt/pure/__release - local.get $24 - call $~lib/rt/pure/__release - local.get $26 - call $~lib/rt/pure/__release - local.get $25 - call $~lib/rt/pure/__release - local.get $5 + local.get $18 call $~lib/rt/pure/__release - local.get $21 + local.get $17 call $~lib/rt/pure/__release - local.get $23 + local.get $2 call $~lib/rt/pure/__release - local.get $22 + local.get $16 call $~lib/rt/pure/__release - local.get $2 + local.get $15 call $~lib/rt/pure/__release - local.get $18 + local.get $0 call $~lib/rt/pure/__release - local.get $20 + local.get $14 call $~lib/rt/pure/__release - local.get $19 + local.get $13 call $~lib/rt/pure/__release - local.get $0 + local.get $4 call $~lib/rt/pure/__release - local.get $15 + local.get $12 call $~lib/rt/pure/__release - local.get $17 + local.get $11 call $~lib/rt/pure/__release - local.get $16 + local.get $3 call $~lib/rt/pure/__release - local.get $6 + local.get $10 call $~lib/rt/pure/__release - local.get $12 + local.get $9 call $~lib/rt/pure/__release - local.get $14 + local.get $5 call $~lib/rt/pure/__release - local.get $13 + local.get $8 call $~lib/rt/pure/__release local.get $7 call $~lib/rt/pure/__release - local.get $9 + local.get $6 call $~lib/rt/pure/__release - local.get $11 + local.get $27 call $~lib/rt/pure/__release - local.get $10 + local.get $28 call $~lib/rt/pure/__release - local.get $4 + local.get $26 call $~lib/rt/pure/__release - local.get $3 + local.get $30 call $~lib/rt/pure/__release - local.get $8 + local.get $31 call $~lib/rt/pure/__release - local.get $38 + local.get $29 call $~lib/rt/pure/__release local.get $33 call $~lib/rt/pure/__release - local.get $40 + local.get $34 call $~lib/rt/pure/__release - local.get $41 + local.get $32 call $~lib/rt/pure/__release - local.get $42 + local.get $36 + call $~lib/rt/pure/__release + local.get $37 + call $~lib/rt/pure/__release + local.get $35 call $~lib/rt/pure/__release local.get $39 call $~lib/rt/pure/__release - local.get $44 + local.get $40 call $~lib/rt/pure/__release - local.get $45 + local.get $38 call $~lib/rt/pure/__release - local.get $46 + local.get $42 call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release local.get $49 call $~lib/rt/pure/__release local.get $50 call $~lib/rt/pure/__release - local.get $47 + local.get $51 + call $~lib/rt/pure/__release + local.get $41 + call $~lib/rt/pure/__release + local.get $44 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release @@ -22623,43 +22341,15 @@ call $~lib/rt/pure/__release local.get $54 call $~lib/rt/pure/__release - local.get $51 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release local.get $57 call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $61 + local.get $56 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $70 - call $~lib/rt/pure/__release - local.get $76 + local.get $61 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 0 @@ -22822,8 +22512,8 @@ global.get $std/array/arr i32.const 7 call $~lib/array/Array#every - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 1 i32.eq i32.eqz @@ -22838,8 +22528,8 @@ global.get $std/array/arr i32.const 8 call $~lib/array/Array#every - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.eq i32.eqz @@ -22854,8 +22544,8 @@ global.get $std/array/arr i32.const 9 call $~lib/array/Array#every - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 1 i32.eq i32.eqz @@ -22883,8 +22573,8 @@ global.get $std/array/arr i32.const 10 call $~lib/array/Array#every - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.eq i32.eqz @@ -22911,8 +22601,8 @@ global.get $std/array/arr i32.const 11 call $~lib/array/Array#every - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 1 i32.eq i32.eqz @@ -22948,8 +22638,8 @@ global.get $std/array/arr i32.const 12 call $~lib/array/Array#some - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 1 i32.eq i32.eqz @@ -22964,8 +22654,8 @@ global.get $std/array/arr i32.const 13 call $~lib/array/Array#some - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.eq i32.eqz @@ -22980,8 +22670,8 @@ global.get $std/array/arr i32.const 14 call $~lib/array/Array#some - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.eq i32.eqz @@ -23009,8 +22699,8 @@ global.get $std/array/arr i32.const 15 call $~lib/array/Array#some - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 1 i32.eq i32.eqz @@ -23037,8 +22727,8 @@ global.get $std/array/arr i32.const 16 call $~lib/array/Array#some - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.eq i32.eqz @@ -23202,21 +22892,21 @@ unreachable end i32.const 0 - local.set $76 + local.set $61 loop $for-loop|0 - local.get $76 + local.get $61 i32.const 100 i32.lt_s - local.set $70 - local.get $70 + local.set $55 + local.get $55 if global.get $std/array/arr call $~lib/array/Array#pop drop - local.get $76 + local.get $61 i32.const 1 i32.add - local.set $76 + local.set $61 br $for-loop|0 end end @@ -23239,8 +22929,8 @@ global.get $std/array/arr i32.const 22 call $~lib/array/Array#map - local.set $76 - local.get $76 + local.set $61 + local.get $61 call $~lib/array/Array#get:length i32.const 4 i32.eq @@ -23253,7 +22943,7 @@ call $~lib/builtins/abort unreachable end - local.get $76 + local.get $61 i32.const 0 call $~lib/array/Array#__get global.get $std/array/arr @@ -23370,13 +23060,13 @@ i32.const 3 call $~lib/array/Array#push drop - local.get $76 + local.get $61 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 26 call $~lib/array/Array#filter - local.set $76 - local.get $76 + local.set $61 + local.get $61 call $~lib/array/Array#get:length i32.const 2 i32.eq @@ -23489,7 +23179,7 @@ i32.const 3 call $~lib/array/Array#push drop - local.get $76 + local.get $61 call $~lib/rt/pure/__release global.get $std/array/arr i32.const 30 @@ -23529,8 +23219,8 @@ i32.const 32 i32.const 0 call $~lib/array/Array#reduce - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.ne i32.const 1 @@ -23548,8 +23238,8 @@ i32.const 33 i32.const 0 call $~lib/array/Array#reduce - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.ne i32.const 0 @@ -23698,8 +23388,8 @@ i32.const 39 i32.const 0 call $~lib/array/Array#reduceRight - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.ne i32.const 1 @@ -23717,8 +23407,8 @@ i32.const 40 i32.const 0 call $~lib/array/Array#reduceRight - local.set $76 - local.get $76 + local.set $61 + local.get $61 i32.const 0 i32.ne i32.const 0 @@ -23846,23 +23536,21 @@ i32.const 4320 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $70 - call $~lib/rt/pure/__retain - local.set $76 + local.set $55 i32.const 0 global.set $~lib/argc - local.get $76 + local.get $55 i32.const 0 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release - local.get $76 + local.get $55 i32.const 8 i32.const 2 i32.const 9 i32.const 4368 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $73 + local.tee $56 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23880,23 +23568,21 @@ i32.const 4416 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $72 - call $~lib/rt/pure/__retain - local.set $71 + local.set $58 i32.const 0 global.set $~lib/argc - local.get $71 + local.get $58 i32.const 0 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release - local.get $71 + local.get $58 i32.const 8 i32.const 3 i32.const 10 i32.const 4496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $68 + local.tee $57 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23914,23 +23600,21 @@ i32.const 4576 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $67 - call $~lib/rt/pure/__retain - local.set $69 + local.set $54 i32.const 0 global.set $~lib/argc - local.get $69 + local.get $54 i32.const 0 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release - local.get $69 + local.get $54 i32.const 5 i32.const 2 i32.const 3 i32.const 4624 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $61 + local.tee $53 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23948,23 +23632,21 @@ i32.const 4672 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $66 - call $~lib/rt/pure/__retain - local.set $55 + local.set $52 i32.const 0 global.set $~lib/argc - local.get $55 + local.get $52 i32.const 0 call $~lib/array/Array#sort|trampoline call $~lib/rt/pure/__release - local.get $55 + local.get $52 i32.const 5 i32.const 2 i32.const 7 i32.const 4720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $64 + local.tee $44 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -23982,72 +23664,62 @@ i32.const 4768 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $63 - call $~lib/rt/pure/__retain - local.set $65 + local.set $41 i32.const 1 i32.const 2 i32.const 3 i32.const 4784 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 - call $~lib/rt/pure/__retain - local.set $62 + local.set $51 i32.const 2 i32.const 2 i32.const 3 i32.const 4816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $56 - call $~lib/rt/pure/__retain - local.set $57 + local.set $50 i32.const 4 i32.const 2 i32.const 3 i32.const 4848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $54 - call $~lib/rt/pure/__retain - local.set $51 + local.set $49 i32.const 4 i32.const 2 i32.const 3 i32.const 4880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $52 - call $~lib/rt/pure/__retain - local.set $53 + local.set $48 i32.const 64 call $std/array/createReverseOrderedArray - local.set $47 + local.set $61 i32.const 128 call $std/array/createReverseOrderedArray - local.set $50 + local.set $47 i32.const 1024 call $std/array/createReverseOrderedArray - local.set $49 + local.set $43 i32.const 10000 call $std/array/createReverseOrderedArray - local.set $48 + local.set $42 i32.const 512 call $std/array/createRandomOrderedArray - local.set $43 - local.get $65 + local.set $38 + local.get $41 call $std/array/assertSortedDefault - local.get $62 + local.get $51 call $std/array/assertSortedDefault - local.get $62 + local.get $51 i32.const 1 i32.const 2 i32.const 3 i32.const 4976 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $39 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24059,16 +23731,16 @@ call $~lib/builtins/abort unreachable end - local.get $57 + local.get $50 call $std/array/assertSortedDefault - local.get $57 + local.get $50 i32.const 2 i32.const 2 i32.const 3 i32.const 5008 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 + local.tee $35 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24080,10 +23752,10 @@ call $~lib/builtins/abort unreachable end - local.get $51 + local.get $49 call $std/array/assertSortedDefault - local.get $51 - local.get $53 + local.get $49 + local.get $48 i32.const 0 call $std/array/isArraysEqual i32.eqz @@ -24095,10 +23767,10 @@ call $~lib/builtins/abort unreachable end - local.get $47 + local.get $61 call $std/array/assertSortedDefault - local.get $47 - local.get $53 + local.get $61 + local.get $48 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24110,10 +23782,10 @@ call $~lib/builtins/abort unreachable end - local.get $50 + local.get $47 call $std/array/assertSortedDefault - local.get $50 - local.get $53 + local.get $47 + local.get $48 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24125,10 +23797,10 @@ call $~lib/builtins/abort unreachable end - local.get $49 + local.get $43 call $std/array/assertSortedDefault - local.get $49 - local.get $53 + local.get $43 + local.get $48 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24140,10 +23812,10 @@ call $~lib/builtins/abort unreachable end - local.get $48 + local.get $42 call $std/array/assertSortedDefault + local.get $42 local.get $48 - local.get $53 i32.const 4 call $std/array/isArraysEqual i32.eqz @@ -24155,53 +23827,27 @@ call $~lib/builtins/abort unreachable end - local.get $43 + local.get $38 call $std/array/assertSortedDefault - local.get $70 - call $~lib/rt/pure/__release - local.get $76 - call $~lib/rt/pure/__release - local.get $73 - call $~lib/rt/pure/__release - local.get $72 - call $~lib/rt/pure/__release - local.get $71 - call $~lib/rt/pure/__release - local.get $68 - call $~lib/rt/pure/__release - local.get $67 - call $~lib/rt/pure/__release - local.get $69 - call $~lib/rt/pure/__release - local.get $61 - call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release - local.get $64 - call $~lib/rt/pure/__release - local.get $63 - call $~lib/rt/pure/__release - local.get $65 + local.get $56 call $~lib/rt/pure/__release local.get $58 call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release - local.get $56 - call $~lib/rt/pure/__release local.get $57 call $~lib/rt/pure/__release local.get $54 call $~lib/rt/pure/__release - local.get $51 + local.get $53 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release - local.get $53 + local.get $44 call $~lib/rt/pure/__release - local.get $47 + local.get $41 + call $~lib/rt/pure/__release + local.get $51 call $~lib/rt/pure/__release local.get $50 call $~lib/rt/pure/__release @@ -24209,49 +23855,57 @@ call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release + local.get $61 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release local.get $43 call $~lib/rt/pure/__release - local.get $45 + local.get $42 call $~lib/rt/pure/__release - local.get $44 + local.get $38 + call $~lib/rt/pure/__release + local.get $39 + call $~lib/rt/pure/__release + local.get $35 call $~lib/rt/pure/__release i32.const 64 call $std/array/createRandomOrderedArray - local.set $44 + local.set $35 i32.const 257 call $std/array/createRandomOrderedArray - local.set $45 - local.get $44 + local.set $39 + local.get $35 i32.const 49 call $std/array/assertSorted - local.get $44 + local.get $35 i32.const 50 call $std/array/assertSorted - local.get $45 + local.get $39 i32.const 51 call $std/array/assertSorted - local.get $45 + local.get $39 i32.const 52 call $std/array/assertSorted - local.get $44 + local.get $35 call $~lib/rt/pure/__release - local.get $45 + local.get $39 call $~lib/rt/pure/__release i32.const 2 call $std/array/createReverseOrderedNestedArray - local.set $45 - local.get $45 + local.set $39 + local.get $39 i32.const 53 call $std/array/assertSorted<~lib/array/Array> - local.get $45 + local.get $39 call $~lib/rt/pure/__release i32.const 512 call $std/array/createReverseOrderedElementsArray - local.set $45 - local.get $45 + local.set $39 + local.get $39 i32.const 54 call $std/array/assertSorted> - local.get $45 + local.get $39 call $~lib/rt/pure/__release i32.const 7 i32.const 2 @@ -24259,25 +23913,21 @@ i32.const 5184 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $44 - call $~lib/rt/pure/__retain - local.set $45 + local.set $35 i32.const 7 i32.const 2 i32.const 15 i32.const 5232 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $48 - call $~lib/rt/pure/__retain - local.set $43 + local.set $38 i32.const 1 global.set $~lib/argc - local.get $45 + local.get $35 i32.const 0 call $std/array/assertSorted<~lib/string/String | null>|trampoline - local.get $45 - local.get $43 + local.get $35 + local.get $38 i32.const 0 call $std/array/isArraysEqual<~lib/string/String | null> i32.eqz @@ -24291,21 +23941,17 @@ end i32.const 400 call $std/array/createRandomStringArray - local.set $49 + local.set $39 i32.const 1 global.set $~lib/argc - local.get $49 + local.get $39 i32.const 0 call $std/array/assertSorted<~lib/string/String>|trampoline - local.get $44 - call $~lib/rt/pure/__release - local.get $45 - call $~lib/rt/pure/__release - local.get $48 + local.get $35 call $~lib/rt/pure/__release - local.get $43 + local.get $38 call $~lib/rt/pure/__release - local.get $49 + local.get $39 call $~lib/rt/pure/__release i32.const 2 i32.const 0 @@ -24313,10 +23959,10 @@ i32.const 5312 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $38 i32.const 5408 call $~lib/array/Array#join - local.tee $49 + local.tee $39 i32.const 5440 call $~lib/string/String.__eq i32.eqz @@ -24334,10 +23980,10 @@ i32.const 5488 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 + local.tee $42 i32.const 5168 call $~lib/array/Array#join - local.tee $48 + local.tee $35 i32.const 6000 call $~lib/string/String.__eq i32.eqz @@ -24355,10 +24001,10 @@ i32.const 6032 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $50 + local.tee $47 i32.const 6064 call $~lib/array/Array#join - local.tee $44 + local.tee $43 i32.const 6000 call $~lib/string/String.__eq i32.eqz @@ -24376,10 +24022,10 @@ i32.const 6096 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $48 i32.const 6128 call $~lib/array/Array#join - local.tee $47 + local.tee $61 i32.const 6160 call $~lib/string/String.__eq i32.eqz @@ -24397,10 +24043,10 @@ i32.const 6224 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $51 + local.tee $50 i32.const 6288 call $~lib/array/Array#join - local.tee $52 + local.tee $49 i32.const 7536 call $~lib/string/String.__eq i32.eqz @@ -24418,10 +24064,10 @@ i32.const 7664 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $57 + local.tee $41 i32.const 5168 call $~lib/array/Array<~lib/string/String | null>#join - local.tee $54 + local.tee $51 i32.const 7632 call $~lib/string/String.__eq i32.eqz @@ -24438,35 +24084,35 @@ i32.const 11 i32.const 0 call $~lib/rt/__allocArray - local.set $56 - local.get $56 + call $~lib/rt/pure/__retain + local.set $44 + local.get $44 i32.load offset=4 - local.set $62 - local.get $62 + local.set $52 + local.get $52 i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $58 + local.tee $53 call $~lib/rt/pure/__retain i32.store - local.get $62 + local.get $52 i32.const 0 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $62 + local.get $52 i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $65 + local.tee $54 call $~lib/rt/pure/__retain i32.store offset=8 - local.get $56 - call $~lib/rt/pure/__retain - local.set $62 - local.get $62 + local.get $44 + local.set $52 + local.get $52 i32.const 5408 call $~lib/array/Array#join - local.tee $56 + local.tee $44 i32.const 7744 call $~lib/string/String.__eq i32.eqz @@ -24483,31 +24129,31 @@ i32.const 8 i32.const 0 call $~lib/rt/__allocArray - local.set $63 - local.get $63 + call $~lib/rt/pure/__retain + local.set $57 + local.get $57 i32.load offset=4 - local.set $64 - local.get $64 + local.set $58 + local.get $58 i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $55 + local.tee $56 call $~lib/rt/pure/__retain i32.store - local.get $64 + local.get $58 i32.const 0 i32.const 0 call $std/array/Ref#constructor - local.tee $66 + local.tee $55 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $63 - call $~lib/rt/pure/__retain - local.set $64 - local.get $64 + local.get $57 + local.set $58 + local.get $58 i32.const 5408 call $~lib/array/Array#join - local.tee $63 + local.tee $57 i32.const 7824 call $~lib/string/String.__eq i32.eqz @@ -24519,45 +24165,45 @@ call $~lib/builtins/abort unreachable end - local.get $43 + local.get $38 call $~lib/rt/pure/__release - local.get $49 + local.get $39 call $~lib/rt/pure/__release - local.get $45 + local.get $42 + call $~lib/rt/pure/__release + local.get $35 + call $~lib/rt/pure/__release + local.get $47 + call $~lib/rt/pure/__release + local.get $43 call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $50 + local.get $61 call $~lib/rt/pure/__release - local.get $44 + local.get $50 call $~lib/rt/pure/__release - local.get $53 + local.get $49 call $~lib/rt/pure/__release - local.get $47 + local.get $41 call $~lib/rt/pure/__release local.get $51 call $~lib/rt/pure/__release - local.get $52 - call $~lib/rt/pure/__release - local.get $57 + local.get $53 call $~lib/rt/pure/__release local.get $54 call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $65 + local.get $52 call $~lib/rt/pure/__release - local.get $62 + local.get $44 call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $64 + local.get $58 call $~lib/rt/pure/__release - local.get $63 + local.get $57 call $~lib/rt/pure/__release i32.const 0 i32.const 2 @@ -24565,26 +24211,20 @@ i32.const 7904 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $64 - call $~lib/rt/pure/__retain - local.set $63 + local.set $58 i32.const 1 i32.const 2 i32.const 3 i32.const 7920 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $55 - call $~lib/rt/pure/__retain - local.set $66 + local.set $55 i32.const 2 i32.const 2 i32.const 3 i32.const 7952 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $62 - call $~lib/rt/pure/__retain local.set $56 i32.const 4 i32.const 2 @@ -24592,12 +24232,10 @@ i32.const 7984 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $58 - call $~lib/rt/pure/__retain - local.set $65 - local.get $63 + local.set $44 + local.get $58 call $~lib/array/Array#toString - local.tee $54 + local.tee $57 i32.const 5168 call $~lib/string/String.__eq i32.eqz @@ -24609,9 +24247,9 @@ call $~lib/builtins/abort unreachable end - local.get $66 + local.get $55 call $~lib/array/Array#toString - local.tee $57 + local.tee $52 i32.const 7632 call $~lib/string/String.__eq i32.eqz @@ -24625,7 +24263,7 @@ end local.get $56 call $~lib/array/Array#toString - local.tee $52 + local.tee $54 i32.const 8016 call $~lib/string/String.__eq i32.eqz @@ -24637,9 +24275,9 @@ call $~lib/builtins/abort unreachable end - local.get $65 + local.get $44 call $~lib/array/Array#toString - local.tee $51 + local.tee $53 i32.const 8048 call $~lib/string/String.__eq i32.eqz @@ -24657,9 +24295,9 @@ i32.const 8080 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $53 + local.tee $41 call $~lib/array/Array#toString - local.tee $47 + local.tee $51 i32.const 8112 call $~lib/string/String.__eq i32.eqz @@ -24679,7 +24317,7 @@ call $~lib/rt/pure/__retain local.tee $50 call $~lib/array/Array#toString - local.tee $44 + local.tee $49 i32.const 8176 call $~lib/string/String.__eq i32.eqz @@ -24697,9 +24335,9 @@ i32.const 8224 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $45 - call $~lib/array/Array#toString local.tee $48 + call $~lib/array/Array#toString + local.tee $61 i32.const 8272 call $~lib/string/String.__eq i32.eqz @@ -24717,9 +24355,9 @@ i32.const 8336 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $43 + local.tee $47 call $~lib/array/Array#toString - local.tee $49 + local.tee $43 i32.const 8384 call $~lib/string/String.__eq i32.eqz @@ -24737,12 +24375,10 @@ i32.const 8496 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $69 - call $~lib/rt/pure/__retain - local.set $61 - local.get $61 + local.set $42 + local.get $42 call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $67 + local.tee $35 i32.const 8544 call $~lib/string/String.__eq i32.eqz @@ -24760,9 +24396,9 @@ i32.const 8656 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $71 + local.tee $38 call $~lib/array/Array<~lib/string/String | null>#toString - local.tee $68 + local.tee $39 i32.const 8688 call $~lib/string/String.__eq i32.eqz @@ -24779,36 +24415,36 @@ i32.const 12 i32.const 0 call $~lib/rt/__allocArray - local.set $72 - local.get $72 + call $~lib/rt/pure/__retain + local.set $40 + local.get $40 i32.load offset=4 - local.set $73 - local.get $73 + local.set $37 + local.get $37 i32.const 2 i32.const 2 i32.const 3 i32.const 8720 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $70 + local.tee $32 call $~lib/rt/pure/__retain i32.store - local.get $73 + local.get $37 i32.const 2 i32.const 2 i32.const 3 i32.const 8752 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $46 + local.tee $34 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $72 - call $~lib/rt/pure/__retain - local.set $78 - local.get $78 + local.get $40 + local.set $63 + local.get $63 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $73 + local.tee $37 i32.const 8784 call $~lib/string/String.__eq i32.eqz @@ -24825,36 +24461,36 @@ i32.const 23 i32.const 0 call $~lib/rt/__allocArray - local.set $72 - local.get $72 + call $~lib/rt/pure/__retain + local.set $40 + local.get $40 i32.load offset=4 - local.set $76 - local.get $76 + local.set $36 + local.get $36 i32.const 2 i32.const 0 i32.const 6 i32.const 8816 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $42 + local.tee $29 call $~lib/rt/pure/__retain i32.store - local.get $76 + local.get $36 i32.const 2 i32.const 0 i32.const 6 i32.const 8848 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $41 + local.tee $31 call $~lib/rt/pure/__retain i32.store offset=4 - local.get $72 - call $~lib/rt/pure/__retain - local.set $79 - local.get $79 + local.get $40 + local.set $64 + local.get $64 call $~lib/array/Array<~lib/array/Array>#toString - local.tee $76 + local.tee $36 i32.const 8784 call $~lib/string/String.__eq i32.eqz @@ -24871,39 +24507,41 @@ i32.const 25 i32.const 0 call $~lib/rt/__allocArray - local.set $72 - local.get $72 + call $~lib/rt/pure/__retain + local.set $40 + local.get $40 i32.load offset=4 - local.set $39 - local.get $39 + local.set $33 + local.get $33 i32.const 1 i32.const 2 i32.const 24 i32.const 0 call $~lib/rt/__allocArray - local.set $40 - local.get $40 + call $~lib/rt/pure/__retain + local.set $30 + local.get $30 i32.load offset=4 - local.set $33 - local.get $33 + local.set $26 + local.get $26 i32.const 1 i32.const 2 i32.const 7 i32.const 8880 call $~lib/rt/__allocArray call $~lib/rt/pure/__retain - local.tee $8 + local.tee $27 call $~lib/rt/pure/__retain i32.store - local.get $40 + local.get $30 + local.tee $26 call $~lib/rt/pure/__retain i32.store - local.get $72 - call $~lib/rt/pure/__retain - local.set $80 - local.get $80 + local.get $40 + local.set $65 + local.get $65 call $~lib/array/Array<~lib/array/Array<~lib/array/Array>>#toString - local.tee $39 + local.tee $33 i32.const 7632 call $~lib/string/String.__eq i32.eqz @@ -24915,87 +24553,79 @@ call $~lib/builtins/abort unreachable end - local.get $64 - call $~lib/rt/pure/__release - local.get $63 + local.get $58 call $~lib/rt/pure/__release local.get $55 call $~lib/rt/pure/__release - local.get $66 - call $~lib/rt/pure/__release - local.get $62 - call $~lib/rt/pure/__release local.get $56 call $~lib/rt/pure/__release - local.get $58 - call $~lib/rt/pure/__release - local.get $65 - call $~lib/rt/pure/__release - local.get $54 + local.get $44 call $~lib/rt/pure/__release local.get $57 call $~lib/rt/pure/__release local.get $52 call $~lib/rt/pure/__release - local.get $51 + local.get $54 call $~lib/rt/pure/__release local.get $53 call $~lib/rt/pure/__release - local.get $47 + local.get $41 call $~lib/rt/pure/__release - local.get $50 + local.get $51 call $~lib/rt/pure/__release - local.get $44 + local.get $50 call $~lib/rt/pure/__release - local.get $45 + local.get $49 call $~lib/rt/pure/__release local.get $48 call $~lib/rt/pure/__release - local.get $43 + local.get $61 call $~lib/rt/pure/__release - local.get $49 + local.get $47 call $~lib/rt/pure/__release - local.get $69 + local.get $43 call $~lib/rt/pure/__release - local.get $61 + local.get $42 call $~lib/rt/pure/__release - local.get $67 + local.get $35 call $~lib/rt/pure/__release - local.get $71 + local.get $38 call $~lib/rt/pure/__release - local.get $68 + local.get $39 call $~lib/rt/pure/__release - local.get $70 + local.get $32 call $~lib/rt/pure/__release - local.get $46 + local.get $34 call $~lib/rt/pure/__release - local.get $73 + local.get $37 call $~lib/rt/pure/__release - local.get $42 + local.get $29 call $~lib/rt/pure/__release - local.get $41 + local.get $31 call $~lib/rt/pure/__release - local.get $76 + local.get $36 call $~lib/rt/pure/__release - local.get $8 + local.get $27 call $~lib/rt/pure/__release - local.get $39 + local.get $26 + call $~lib/rt/pure/__release + local.get $33 call $~lib/rt/pure/__release global.get $std/array/arr call $~lib/rt/pure/__release - local.get $59 + local.get $45 call $~lib/rt/pure/__release - local.get $60 + local.get $46 call $~lib/rt/pure/__release - local.get $74 + local.get $59 call $~lib/rt/pure/__release - local.get $75 + local.get $60 call $~lib/rt/pure/__release - local.get $78 + local.get $63 call $~lib/rt/pure/__release - local.get $79 + local.get $64 call $~lib/rt/pure/__release - local.get $80 + local.get $65 call $~lib/rt/pure/__release ) (func $start (; 316 ;) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 94de3d22c4..59d19bf1ef 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -5964,13 +5964,13 @@ if i32.const 1 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.tee $1 i32.load offset=4 local.get $0 call $~lib/rt/pure/__retain i32.store local.get $1 - call $~lib/rt/pure/__retain return end local.get $0 diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 3ff6dc94d5..1c2602b605 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -9023,6 +9023,7 @@ i32.const 4 i32.const 0 call $~lib/rt/__allocArray + call $~lib/rt/pure/__retain local.set $3 local.get $3 i32.load offset=4 @@ -9032,7 +9033,6 @@ call $~lib/rt/pure/__retain i32.store local.get $3 - call $~lib/rt/pure/__retain local.set $4 local.get $1 call $~lib/rt/pure/__release From 9bfd15aad1b43050b375fda76bb0f40ea7b82636 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 9 Jan 2020 17:22:42 +0100 Subject: [PATCH 08/19] general cleanup --- bin/asinit | 6 +- lib/loader/index.js | 12 +- lib/loader/tests/build/untouched.wasm | Bin 10113 -> 10465 bytes src/ast.ts | 11 +- src/builtins.ts | 21 +- src/compiler.ts | 702 ++++++++---------- src/resolver.ts | 4 +- tests/compiler/assert-nonnull.optimized.wat | 13 +- tests/compiler/assert-nonnull.untouched.wat | 13 +- tests/compiler/call-inferred.optimized.wat | 5 +- tests/compiler/call-inferred.untouched.wat | 7 +- tests/compiler/call-optional.optimized.wat | 15 +- tests/compiler/call-optional.untouched.wat | 15 +- .../class-static-function.optimized.wat | 5 +- .../class-static-function.untouched.wat | 5 +- tests/compiler/exports.optimized.wat | 18 +- tests/compiler/exports.untouched.wat | 28 +- .../js-bigint-integration.optimized.wat | 6 +- .../js-bigint-integration.untouched.wat | 6 +- .../features/mutable-globals.optimized.wat | 6 +- .../features/mutable-globals.untouched.wat | 6 +- .../function-expression.optimized.wat | 19 +- .../function-expression.untouched.wat | 19 +- tests/compiler/function-types.optimized.wat | 15 +- tests/compiler/function-types.untouched.wat | 19 +- tests/compiler/getter-call.optimized.wat | 5 +- tests/compiler/getter-call.untouched.wat | 5 +- tests/compiler/infer-generic.optimized.wat | 5 +- tests/compiler/infer-generic.untouched.wat | 5 +- tests/compiler/inlining.optimized.wat | 5 +- tests/compiler/inlining.untouched.wat | 5 +- .../resolve-function-expression.optimized.wat | 9 +- .../resolve-function-expression.untouched.wat | 9 +- tests/compiler/resolve-ternary.optimized.wat | 9 +- tests/compiler/resolve-ternary.untouched.wat | 9 +- tests/compiler/retain-release.optimized.wat | 13 +- tests/compiler/retain-release.untouched.wat | 15 +- tests/compiler/retain-return.optimized.wat | 33 +- tests/compiler/retain-return.untouched.wat | 33 +- tests/compiler/rt/instanceof.optimized.wat | 6 +- tests/compiler/rt/instanceof.untouched.wat | 6 +- tests/compiler/rt/stub-realloc.optimized.wat | 6 +- tests/compiler/rt/stub-realloc.untouched.wat | 6 +- tests/compiler/std/array.optimized.wat | 71 +- tests/compiler/std/array.untouched.wat | 113 +-- tests/compiler/std/arraybuffer.optimized.wat | 5 +- tests/compiler/std/arraybuffer.untouched.wat | 7 +- tests/compiler/std/dataview.optimized.wat | 7 +- tests/compiler/std/dataview.untouched.wat | 7 +- tests/compiler/std/string.optimized.wat | 17 +- tests/compiler/std/string.untouched.wat | 17 +- tests/compiler/std/trace.optimized.wat | 6 +- tests/compiler/std/trace.untouched.wat | 6 +- tests/compiler/std/typedarray.optimized.wat | 281 +++---- tests/compiler/std/typedarray.untouched.wat | 351 ++++----- tests/compiler/typeof.optimized.wat | 6 +- tests/compiler/typeof.untouched.wat | 6 +- 57 files changed, 978 insertions(+), 1082 deletions(-) diff --git a/bin/asinit b/bin/asinit index 5e2a18d736..62822ea573 100755 --- a/bin/asinit +++ b/bin/asinit @@ -53,7 +53,7 @@ console.log([ " TypeScript configuration inheriting recommended AssemblyScript settings.", "", colors.cyan(" ./assembly/index.ts"), - " Exemplary entry file being compiled to WebAssembly to get you started.", + " Example entry file being compiled to WebAssembly to get you started.", "", colors.cyan(" ./build"), " Build artifact directory where compiled WebAssembly files are stored.", @@ -65,7 +65,7 @@ console.log([ " Main file loading the WebAssembly module and exporting its exports.", "", colors.cyan(" ./tests/index.js"), - " Exemplary test to check that your module is indeed working.", + " Example test to check that your module is indeed working.", "", colors.cyan(" ./package.json"), " Package info containing the necessary commands to compile to WebAssembly.", @@ -122,7 +122,7 @@ rl.question(colors.white("Do you want to proceed?") + " [Y/n] ", answer => { " ^ The optimized WebAssembly module using default optimization settings.", " You can change the optimization settings in '" + colors.cyan("package.json")+ "'.", "", - "To run the exemplary tests, do:", + "To run the tests, do:", "", colors.white(" npm test"), "", diff --git a/lib/loader/index.js b/lib/loader/index.js index 8ed61bd0bb..68ce9b478e 100644 --- a/lib/loader/index.js +++ b/lib/loader/index.js @@ -271,9 +271,9 @@ function postInstantiate(baseModule, instance) { } /** Wraps a WebAssembly function while also taking care of variable arguments. */ -function wrapFunction(fn, setargc) { +function wrapFunction(fn, argumentsLength) { var wrap = (...args) => { - setargc(args.length); + if (argumentsLength) argumentsLength.value = args.length; return fn(...args); } wrap.original = fn; @@ -336,7 +336,7 @@ exports.instantiateStreaming = instantiateStreaming; /** Demangles an AssemblyScript module's exports to a friendly object structure. */ function demangle(exports, baseModule) { var module = baseModule ? Object.create(baseModule) : {}; - var setargc = exports["__setargc"] || function() {}; + var argumentsLength = exports["__argumentsLength"]; function hasOwnProperty(elem, prop) { return Object.prototype.hasOwnProperty.call(elem, prop); } @@ -386,11 +386,11 @@ function demangle(exports, baseModule) { } } else { if (name === 'constructor') { - curr[name] = wrapFunction(elem, setargc); + curr[name] = wrapFunction(elem, argumentsLength); } else { // for methods Object.defineProperty(curr, name, { value: function (...args) { - setargc(args.length); + if (argumentsLength) argumentsLength.value = args.length; return elem(this[THIS], ...args); } }); @@ -406,7 +406,7 @@ function demangle(exports, baseModule) { }); } } else if (typeof elem === "function") { - curr[name] = wrapFunction(elem, setargc); + curr[name] = wrapFunction(elem, argumentsLength); } else { curr[name] = elem; } diff --git a/lib/loader/tests/build/untouched.wasm b/lib/loader/tests/build/untouched.wasm index 36f6ab359662bb49b35ce36a4152da8fbee64064..a24fafec780c7d4de58b72b6d701f76ad78cf42c 100644 GIT binary patch delta 3869 zcmai1Yit}>6~2#|+1Z_qJ$9_bv19wruI)N;96OIXiR(0bAxY~b)O`pQL`&l)o3!g! zcD)UaD2&?@;0F~BSA_`mN2K-#MJftVgd!mt!JmRuDO5s5NT?0JfC}0OsX{_(_|Bb~ z;Dl7H;<+>Taqf4|`ObGwo}Iq>K+I;A<~d`G?=K$ZF^`XmIA-*~E61CR>6@PDaM0k3 z*^aNUqq#VKhJNfQ#~U@`@v3r@!X##2QRuo%=EWBdKQA*+s>x8 z#~zz$oP27&y3kxYQe8ONd_uOHVg7W--tf~ijq*~pIkE86{Qkwo#uB^R{G6W+hl5F1<&=!7Cx zERsqNi3`Obax{xv<-iMs6(}=6Iy_BylsH7LR${ioG`p7^>QoRA zPIfdK7fe)u9Q~1_0C}A76M9jR6~tiu6#8)x5m)R)U%62Z&N6~0~J zBWh7j<**`I5MV(;`BC033RFQmO_i@@OOFPD@-?qTevt?GVM~0t_CvAsTsUd#{dA~( zOoz?T=~Ap8XJEkuC%-2=nx-xF6{6j5r0zjbSb%>RrscG{#C2GLuar349sJ6?p8tZR zK(-brwu6QFB8A1v;`CDCJG&->U?=ApyAx`soSiAB|d4+ z1`pu*PH-fiEMqXt2f-`Ep0Xt8M;s32ktjQn46N^jl9{(FN>D<%${iAp<-#(4xw@uC z9z;kzMEm-6R@dxs5>(}eKF;P65U!nC#9d6X%VNx0z2-o&0-)S5k3G_PPm_}v?{|pY7Nb;r3VajfY+^eLF&WIQMKX=qZ6*%enM5Sz;5-&owwZFm;%WH5qXT1dDgA}X3n*!0u-d5hifRVKWpi0p~W(b*hl8w zmi1e2>iW0TZ4|^Hu-!P1ex|NOmaO_?)7x5B2&s}mCzuerh+{|&P<&kY02bDQN6bR& z;P499e_<&lC<43&S7Id@W@H!&lpt9#ms#Bb&4mE1vZcmC6985DUVc%Ctn<2BaBTj2F#Ebu`vx7 zRuef=dr)SwW8MfO^R;lBL{6GZ;Y*yE&$j)@OSUjx`#0>sx%T5(*T2%P=huEJ>w0so zo%Pd)I;Ndc@UrA?49XCvIhY_IPLLaHT;z3F z;YujwtU9P1oyQJU!J#&<+ zptQOAtw_-gtR;yn1QRk;?V#7Kus+z(`N;pkf=6z*9?S9D0?p9u9z-09R<|jf5&L(k z6cIahI18b9*fhIF+KIR5f-0?3jINR{^IF&5k>6AD5GNh5kEc2kiBI5aTlWU2*l_ot zy+|?ZaK_?CyI+NLLLOPTHe#lAtyK6>ziqt@EvT$&fq~4oeU=^~i zM0f|3k@O8IlIa_`$ii-<_*ucd7;`-I*n$EOsUV@^!Rk?>UGdHCf5Ay=042?%JzXI2 zmwIOL{Buu#Tn71RW0<(o4ZtLx2Wh9sV__2qDNQ9j;ajYmrbYu%8hU{B@m^O z1w0!Ln{TV=K#%3rkSJPCB4~(rxP{trQ4HGQHsTw7ha(iYpcT5?-%f@VYl9O;Q4*MI zYRlw#P6XjefuO|cL}Y>N0*Xw%`vx+CgzA8WZ8(nv8V)EAMZ1gMJ>(2*hda`IH`+F~ zjW!N^1P(iI4|Zbe?Kt~#KIN>r7InlOt0042J2TMlIeNv_<%B&rMDo2k`MwiZAm|LK zRB|q@$KbQ6RCAcZy#U-uZA_^}j+Lt5n}Yi>W%nwbHOr+!Y(>^;7|6Iv$Zl3K&5ACO z2-1Zr&Y=c%p7O~JXlCuGw0aC%RH?xlnq>D|L{7Pzz##{Z2c5W5lw=r$vTM*lBDD_! zCBSJda7((bh*e&Y9@JvVCs+z9uL^_(&1})J25$v{t1xg8pRVBh!s=YP17);875&%J zeH$pBQCd0wt)4P9`%L*kzG5zv_jH21yh~G+jsL{pTEEJ4C#Vvb_sfU)gcId&IId9}J9Pks2K3@0t4tN5zU`o*kUvSIjR4 TcZg-zTpJt{7hO}njc zx{~jmGjqGUE409I79JdRmB3ot8UH=W(GtS}t)X}x zW`j6BPd_*JUEu9p%$+>zmAVva<~`vf zrAp!STy^r~nZ-w!mMW*AXy0Pbt{=`Fd8%~s_}rK0P9Cp51!LL6hf%9kIer9;E%6>T z9vodt0^MYPz%RsG8yA<3o;Y@H-@;O+HLJa%GX0Y+-lk)>1T zprt0AIC-K9+iKF$%F-#=zAm+^%$=GmRbfYcDj!)|JXNa9!DKeWz<}bryXwCGaPbx& zW_7V-9Jsqr@T^q^|21PGtz&@^5^%8IHvEZULJO=mXZ~q# z)oaSX-y+Juc0wBEv7T!6{3pN%`BABTK%*EVc|vM2Iid^u}tYhj#$&w zPlaB~6X24;Oe3R6*@QEsbUpk^T~aFCWR~rRVPv0dIAh;w_>G|DXB#g{TDJM7qi*6{ z)5SzThkJuvZ5Xi+HHU6#x;fE(^>58Hvg?vy65}FbAc3Xk2n&)4_s=n9_qF%h6YbqG zahZV6c?h<_Xa$y~*Xz5o)xJVWCXz&H6krk{;hj5$Fc~@pIUW|UO#nK{pc5od2APLl z5nnPfz70944H{-f_s@?ij_&(MX-JMT0EbZJoOY z-=f+eu1RDSORF4v_`U3VxwD<^vafXxciQ59;sJWZnjXULh9|(zU*kSQN%F{Yt#~{Ovx`}_7g!E{y3F~-Q2T{F+1O*@%h7^X?(u#W}5WM zR3;_9PKlo())U=zI--w>WUeh838Rym(097AQfKUkx_7hrh?`5o)SIyy>U6CjdR3|( z?S&80hXMuZVx131?2afh9gYq|JV!~OG=-z|p5QsvKpAf8ATiuXpsPIgy}m|rs-Xd! z$rzYF*cYRb?#oF>PcC82&r++ycy3ZW+e3RJYGorf=-sa5V-i0Z$g8x|y_@3A5pJR~ z$S&Mqi`sZ!D*Y<^IVx$s9m&*mH$o)BL$w%Rk>)*V3du(j#+=9-5_t<&5K<1?m=+5g zBF`lO@o~2uUX*1z9+n&`+-*2zChS{Y870qQcgknh*)2vQn$Q%ymxGAptqq43ve2a!A7X! z8_afF7}&{g0xoW5FWDat>|pQNKMxFdt#H+X|B(Po|7cu+IXH?&S8Vg(4*nNzX9mYH n%$310cFkTJ9OEAedwp<{U9szjw(!@bJv21VZ%cb&=-dAXSCC?j diff --git a/src/ast.ts b/src/ast.ts index 2980df67b7..9c52cd747a 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -249,8 +249,7 @@ export abstract class Node { ): IdentifierExpression { var expr = new IdentifierExpression(); expr.range = range; - expr.text = name; // TODO: extract from range - expr.symbol = name; // TODO: Symbol.for(name) + expr.text = name; expr.isQuoted = isQuoted; return expr; } @@ -1292,8 +1291,6 @@ export class IdentifierExpression extends Expression { /** Textual name. */ text: string; - /** Symbol. */ - symbol: string; // TODO: symbol /** Whether quoted or not. */ isQuoted: bool; } @@ -1418,7 +1415,6 @@ export class CommaExpression extends Expression { export class ConstructorExpression extends IdentifierExpression { kind = NodeKind.CONSTRUCTOR; text = "constructor"; - symbol = CommonSymbols.constructor; } /** Represents an element access expression, e.g., array access. */ @@ -1501,7 +1497,6 @@ export class NewExpression extends Expression { export class NullExpression extends IdentifierExpression { kind = NodeKind.NULL; text = "null"; - symbol = CommonSymbols.null_; } /** Represents an object literal expression. */ @@ -1566,28 +1561,24 @@ export class StringLiteralExpression extends LiteralExpression { export class SuperExpression extends IdentifierExpression { kind = NodeKind.SUPER; text = "super"; - symbol = CommonSymbols.super_; } /** Represents a `this` expression. */ export class ThisExpression extends IdentifierExpression { kind = NodeKind.THIS; text = "this"; - symbol = CommonSymbols.this_; } /** Represents a `true` expression. */ export class TrueExpression extends IdentifierExpression { kind = NodeKind.TRUE; text = "true"; - symbol = CommonSymbols.true_; } /** Represents a `false` expression. */ export class FalseExpression extends IdentifierExpression { kind = NodeKind.FALSE; text = "false"; - symbol = CommonSymbols.false_; } /** Base class of all unary expressions. */ diff --git a/src/builtins.ts b/src/builtins.ts index 3569e7dda2..f8e18d1ae7 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -167,7 +167,6 @@ export namespace BuiltinSymbols { export const f32 = "~lib/builtins/f32"; export const f64 = "~lib/builtins/f64"; export const v128 = "~lib/builtins/v128"; - export const void_ = "~lib/builtins/void"; export const i32_clz = "~lib/builtins/i32.clz"; export const i64_clz = "~lib/builtins/i64.clz"; @@ -547,37 +546,19 @@ export namespace BuiltinSymbols { export const memory_grow = "~lib/memory/memory.grow"; export const memory_copy = "~lib/memory/memory.copy"; export const memory_fill = "~lib/memory/memory.fill"; - export const memory_allocate = "~lib/memory/memory.allocate"; - export const memory_free = "~lib/memory/memory.free"; - export const memory_reset = "~lib/memory/memory.reset"; - - // std/runtime.ts - export const runtime_instanceof = "~lib/runtime/runtime.instanceof"; - export const runtime_flags = "~lib/runtime/runtime.flags"; - export const runtime_allocate = "~lib/util/runtime/allocate"; - export const runtime_reallocate = "~lib/util/runtime/reallocate"; - export const runtime_register = "~lib/util/runtime/register"; - export const runtime_discard = "~lib/util/runtime/discard"; - export const runtime_makeArray = "~lib/util/runtime/makeArray"; // std/typedarray.ts export const Int8Array = "~lib/typedarray/Int8Array"; export const Uint8Array = "~lib/typedarray/Uint8Array"; + export const Uint8ClampedArray = "~lib/typedarray/Uint8ClampedArray"; export const Int16Array = "~lib/typedarray/Int16Array"; export const Uint16Array = "~lib/typedarray/Uint16Array"; export const Int32Array = "~lib/typedarray/Int32Array"; export const Uint32Array = "~lib/typedarray/Uint32Array"; export const Int64Array = "~lib/typedarray/Int64Array"; export const Uint64Array = "~lib/typedarray/Uint64Array"; - export const Uint8ClampedArray = "~lib/typedarray/Uint8ClampedArray"; export const Float32Array = "~lib/typedarray/Float32Array"; export const Float64Array = "~lib/typedarray/Float64Array"; - - // compiler generated - export const started = "~lib/started"; - export const argc = "~lib/argc"; - export const setargc = "~lib/setargc"; - export const capabilities = "~lib/capabilities"; } /** Compiles a call to a built-in function. */ diff --git a/src/compiler.ts b/src/compiler.ts index b3d2c3b388..db0e54cfd8 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -288,10 +288,9 @@ export class Compiler extends DiagnosticEmitter { get options(): Options { return this.program.options; } /** Module instance being compiled. */ module: Module; + /** Current control flow. */ currentFlow: Flow; - /** Current inline functions stack. */ - currentInlineFunctions: Function[] = []; /** Current parent element if not a function, i.e. an enum or namespace. */ currentParent: Element | null = null; /** Current type in compilation. */ @@ -306,16 +305,14 @@ export class Compiler extends DiagnosticEmitter { stringSegments: Map = new Map(); /** Function table being compiled. First elem is blank. */ functionTable: string[] = []; - /** Argument count helper global. */ - argcVar: GlobalRef = 0; - /** Argument count helper setter. */ - argcSet: FunctionRef = 0; + /** Arguments length helper global. */ + builtinArgumentsLength: GlobalRef = 0; /** Requires runtime features. */ runtimeFeatures: RuntimeFeatures = RuntimeFeatures.NONE; /** Expressions known to have skipped an autorelease. Usually function returns. */ skippedAutoreleases: Set = new Set(); - /** Registered event types. */ - events: Map = new Map(); + /** Current inline functions stack. */ + inlineStack: Function[] = []; /** Compiles a {@link Program} to a {@link Module} using the specified options. */ static compile(program: Program): Module { @@ -363,7 +360,7 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = startFunctionInstance.flow; this.currentBody = startFunctionBody; - // add a mutable heap and rtti base dummies + // add mutable heap and rtti base dummies if (options.isWasm64) { module.addGlobal(BuiltinSymbols.heap_base, NativeType.I64, true, module.i64(0)); module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, true, module.i64(0)); @@ -387,12 +384,12 @@ export class Compiler extends DiagnosticEmitter { if (!startIsEmpty || explicitStart) { let signature = startFunctionInstance.signature; if (!startIsEmpty && explicitStart) { - module.addGlobal(BuiltinSymbols.started, NativeType.I32, true, module.i32(0)); + module.addGlobal("~started", NativeType.I32, true, module.i32(0)); startFunctionBody.unshift( module.if( - module.global_get(BuiltinSymbols.started, NativeType.I32), + module.global_get("~started", NativeType.I32), module.return(), - module.global_set(BuiltinSymbols.started, module.i32(1)) + module.global_set("~started", module.i32(1)) ) ); } @@ -515,8 +512,8 @@ export class Compiler extends DiagnosticEmitter { } case ElementKind.PROPERTY_PROTOTYPE: { let getter = (element).getterPrototype; - let setter = (element).setterPrototype; if (getter) this.ensureModuleExport(GETTER_PREFIX + name, getter, prefix); + let setter = (element).setterPrototype; if (setter) this.ensureModuleExport(SETTER_PREFIX + name, setter, prefix); break; } @@ -551,7 +548,7 @@ export class Compiler extends DiagnosticEmitter { if (signature.requiredParameters < signature.parameterTypes.length) { // utilize trampoline to fill in omitted arguments instance = this.ensureTrampoline(instance); - this.ensureArgcSet(); + this.ensureBuiltinArgumentsLength(); } if (instance.is(CommonFlags.COMPILED)) this.module.addFunctionExport(instance.internalName, prefix + name); break; @@ -564,9 +561,9 @@ export class Compiler extends DiagnosticEmitter { break; } case ElementKind.FIELD: { - this.ensureModuleFieldGetter(prefix + GETTER_PREFIX + name, element); + this.makeExportedFieldGetter(prefix + GETTER_PREFIX + name, element); if (!element.is(CommonFlags.READONLY)) { - this.ensureModuleFieldSetter(prefix + SETTER_PREFIX + name, element); + this.makeExportedFieldSetter(prefix + SETTER_PREFIX + name, element); } break; } @@ -615,55 +612,43 @@ export class Compiler extends DiagnosticEmitter { } } - /** Makes a function to get the value of a field of an exported class. */ - private ensureModuleFieldGetter(name: string, field: Field): void { + /** Makes an exported function to get the value of an instance field. */ + private makeExportedFieldGetter(name: string, field: Field): void { var type = field.type; + var nativeThisType = this.options.nativeSizeType; + var nativeValueType = type.toNativeType(); var module = this.module; - var usizeType = this.options.usizeType; - var loadExpr = module.load(type.byteSize, type.is(TypeFlags.SIGNED), - module.local_get(0, usizeType.toNativeType()), - type.toNativeType(), field.memoryOffset - ); - // a user-defined getter would return a retained value, so: - if (type.isManaged) loadExpr = this.makeRetain(loadExpr); - module.addFunction( - name, - usizeType.toNativeType(), - type.toNativeType(), - null, - loadExpr + var returnExpr = module.load(type.byteSize, type.is(TypeFlags.SIGNED), + module.local_get(0, nativeThisType), + nativeValueType, field.memoryOffset ); + // functions retain the return value for the caller + if (type.isManaged) returnExpr = this.makeRetain(returnExpr); + module.addFunction(name, nativeThisType, nativeValueType, null, returnExpr); module.addFunctionExport(name, name); } - /** Makes a function to set the value of a field of an exported class. */ - private ensureModuleFieldSetter(name: string, field: Field): void { + /** Makes an exported function to set the value of an instance field. */ + private makeExportedFieldSetter(name: string, field: Field): void { var type = field.type; + var nativeThisType = this.options.nativeSizeType; + var nativeValueType = type.toNativeType(); var module = this.module; - var nativeType = type.toNativeType(); - var usizeType = this.options.usizeType; - var nativeSizeType = usizeType.toNativeType(); - var valueExpr = module.local_get(1, nativeType); + var valueExpr = module.local_get(1, nativeValueType); if (type.isManaged) { valueExpr = this.makeReplace( - module.load(type.byteSize, false, // oldRef - module.local_get(0, nativeSizeType), - nativeType, field.memoryOffset + module.load(type.byteSize, false, + module.local_get(0, nativeThisType), + nativeValueType, field.memoryOffset ), - valueExpr // newRef + valueExpr ); } - module.addFunction( - name, - createType([ usizeType.toNativeType(), type.toNativeType() ]), - NativeType.None, - null, - module.store( - type.byteSize, - module.local_get(0, nativeSizeType), + module.addFunction(name, createType([ nativeThisType, nativeValueType ]), NativeType.None, null, + module.store(type.byteSize, + module.local_get(0, nativeThisType), valueExpr, - nativeType, - field.memoryOffset + nativeValueType, field.memoryOffset ) ); module.addFunctionExport(name, name); @@ -684,24 +669,30 @@ export class Compiler extends DiagnosticEmitter { } case ElementKind.FUNCTION_PROTOTYPE: { if (!element.is(CommonFlags.GENERIC)) { - this.compileFunctionUsingTypeArguments(element, []); + let instance = this.resolver.resolveFunction(element, null); + if (instance) this.compileFunction(instance); } break; } case ElementKind.CLASS_PROTOTYPE: { if (!element.is(CommonFlags.GENERIC)) { - this.compileClassUsingTypeArguments(element, []); + let instance = this.resolver.resolveClass(element, null); + if (instance) this.compileClass(instance); } break; } case ElementKind.PROPERTY_PROTOTYPE: { let getterPrototype = (element).getterPrototype; if (getterPrototype) { - this.compileFunctionUsingTypeArguments(getterPrototype, []); + assert(!getterPrototype.is(CommonFlags.GENERIC)); + let instance = this.resolver.resolveFunction(getterPrototype, null); + if (instance) this.compileFunction(instance); } let setterPrototype = (element).setterPrototype; if (setterPrototype) { - this.compileFunctionUsingTypeArguments(setterPrototype, []); + assert(!setterPrototype.is(CommonFlags.GENERIC)); + let instance = this.resolver.resolveFunction(setterPrototype, null); + if (instance) this.compileFunction(instance); } break; } @@ -711,13 +702,10 @@ export class Compiler extends DiagnosticEmitter { case ElementKind.INDEXSIGNATURE: break; default: assert(false, ElementKind[element.kind]); } - if (compileMembers) this.compileMembers(element); - } - - /** Compiles an element's members. */ - compileMembers(element: Element): void { - var members = element.members; - if (members) for (let element of members.values()) this.compileElement(element); + if (compileMembers) { + let members = element.members; + if (members) for (let element of members.values()) this.compileElement(element); + } } /** Compiles a file's exports. */ @@ -774,7 +762,7 @@ export class Compiler extends DiagnosticEmitter { this.compileTopLevelStatement(statements[i], startFunctionBody); } this.finishAutoreleases(flow, startFunctionBody); - // No need to insert (unreachable), last statement should have done that + // no need to insert unreachable since last statement should have done that this.currentFlow = previousFlow; this.currentBody = previousBody; @@ -800,6 +788,7 @@ export class Compiler extends DiagnosticEmitter { // === Globals ================================================================================== + /** Compiles a global variable. */ compileGlobal(global: Global): bool { if (global.is(CommonFlags.COMPILED)) return true; global.set(CommonFlags.COMPILED); @@ -1000,6 +989,7 @@ export class Compiler extends DiagnosticEmitter { // === Enums ==================================================================================== + /** Compiles an enum. */ compileEnum(element: Enum): bool { if (element.is(CommonFlags.COMPILED)) return true; element.set(CommonFlags.COMPILED); @@ -1091,133 +1081,7 @@ export class Compiler extends DiagnosticEmitter { // === Functions ================================================================================ - /** Resolves the specified type arguments prior to compiling the resulting function instance. */ - compileFunctionUsingTypeArguments( - prototype: FunctionPrototype, - typeArguments: NamedTypeNode[], - contextualTypeArguments: Map = makeMap(), - alternativeReportNode: Node | null = null - ): Function | null { - if (prototype.hasDecorator(DecoratorFlags.BUILTIN)) return null; - var instance = this.resolver.resolveFunctionInclTypeArguments( - prototype, - typeArguments, - prototype.parent, // relative to itself - contextualTypeArguments, - alternativeReportNode || prototype.declaration - ); - if (!instance) return null; - if (!this.compileFunction(instance)) return null; // reports - return instance; - } - - /** Compiles the body of a function within the specified flow. */ - compileFunctionBody( - /** Function to compile. */ - instance: Function, - /** Target array of statements. */ - stmts: ExpressionRef[] | null = null - ): ExpressionRef[] { - var module = this.module; - var bodyNode = assert(instance.prototype.bodyNode); - var returnType = instance.signature.returnType; - var flow = this.currentFlow; - - // compile statements - if (bodyNode.kind == NodeKind.BLOCK) { - stmts = this.compileStatements((bodyNode).statements, true, stmts); - } else { - // must be an expression statement if not a block - assert(bodyNode.kind == NodeKind.EXPRESSION); - - // must be an arrow function - assert(instance.prototype.arrowKind); - - // none of the following can be an arrow function - assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET)); - - // take special care of properly retaining the returned value - let expr = this.compileReturnedExpression((bodyNode).expression, returnType, Constraints.CONV_IMPLICIT); - - if (!stmts) stmts = [ expr ]; - else stmts.push(expr); - - if (!flow.is(FlowFlags.TERMINATES)) { - let indexBefore = stmts.length; - this.performAutoreleases(flow, stmts); - this.finishAutoreleases(flow, stmts); - let canOverflow = flow.canOverflow(expr, returnType); - let nonNull = flow.isNonnull(expr, returnType); - if (stmts.length > indexBefore) { - let temp = flow.getTempLocal(returnType); - if (!canOverflow) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); - if (nonNull) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); - stmts[indexBefore - 1] = module.local_set(temp.index, expr); - stmts.push(module.local_get(temp.index, returnType.toNativeType())); - flow.freeTempLocal(temp); - } - if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED); - if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL); - flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); - } - } - - // make constructors return their instance pointer - if (instance.is(CommonFlags.CONSTRUCTOR)) { - let nativeSizeType = this.options.nativeSizeType; - assert(instance.is(CommonFlags.INSTANCE)); - let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); - - if (!flow.is(FlowFlags.TERMINATES)) { - let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); - - // if `this` wasn't accessed before, allocate if necessary and initialize `this` - if (!flow.is(FlowFlags.ALLOCATES)) { - // { - // if (!this) this = - // this.a = X - // this.b = Y - // } - stmts.push( - module.if( - module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, - module.local_get(thisLocal.index, nativeSizeType) - ), - module.local_set(thisLocal.index, - this.makeRetain( - this.makeAllocation(classInstance) - ), - ) - ) - ); - this.makeFieldInitialization(classInstance, stmts); - } - this.performAutoreleases(flow, stmts); // `this` is excluded anyway - this.finishAutoreleases(flow, stmts); - stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType)); - flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES); - } - - // check that super has been called if this is a derived class - if ((classInstance).base && !flow.is(FlowFlags.CALLS_SUPER)) { - this.error( - DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call, - instance.prototype.declaration.range - ); - } - - // if this is a normal function, make sure that all branches terminate - } else if (returnType != Type.void && !flow.is(FlowFlags.TERMINATES)) { - this.error( - DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value, - instance.prototype.functionTypeNode.returnType.range - ); - } - - return stmts; - } - - /** Compiles a readily resolved function instance. */ + /** Compiles a priorly resolved function. */ compileFunction(instance: Function): bool { if (instance.is(CommonFlags.COMPILED)) return true; assert(!(instance.is(CommonFlags.AMBIENT) && instance.hasDecorator(DecoratorFlags.BUILTIN))); @@ -1324,25 +1188,115 @@ export class Compiler extends DiagnosticEmitter { return true; } - // === Classes ================================================================================== + /** Compiles the body of a function within the specified flow. */ + private compileFunctionBody( + /** Function to compile. */ + instance: Function, + /** Target array of statements also being returned. Creates a new array if omitted. */ + stmts: ExpressionRef[] | null = null + ): ExpressionRef[] { + var module = this.module; + var bodyNode = assert(instance.prototype.bodyNode); + var returnType = instance.signature.returnType; + var flow = this.currentFlow; - compileClassUsingTypeArguments( - prototype: ClassPrototype, - typeArguments: NamedTypeNode[], - contextualTypeArguments: Map = makeMap(), - alternativeReportNode: Node | null = null - ): void { - var instance = this.resolver.resolveClassInclTypeArguments( - prototype, - typeArguments, - prototype.parent, // relative to itself - contextualTypeArguments, - alternativeReportNode || prototype.declaration - ); - if (!instance) return; - this.compileClass(instance); + // compile statements + if (bodyNode.kind == NodeKind.BLOCK) { + stmts = this.compileStatements((bodyNode).statements, true, stmts); + } else { + // must be an expression statement if not a block + assert(bodyNode.kind == NodeKind.EXPRESSION); + + // must be an arrow function + assert(instance.prototype.arrowKind); + + // none of the following can be an arrow function + assert(!instance.isAny(CommonFlags.CONSTRUCTOR | CommonFlags.GET | CommonFlags.SET)); + + // take special care of properly retaining the returned value + let expr = this.compileReturnedExpression((bodyNode).expression, returnType, Constraints.CONV_IMPLICIT); + + if (!stmts) stmts = [ expr ]; + else stmts.push(expr); + + if (!flow.is(FlowFlags.TERMINATES)) { + let indexBefore = stmts.length; + this.performAutoreleases(flow, stmts); + this.finishAutoreleases(flow, stmts); + let canOverflow = flow.canOverflow(expr, returnType); + let nonNull = flow.isNonnull(expr, returnType); + if (stmts.length > indexBefore) { + let temp = flow.getTempLocal(returnType); + if (!canOverflow) flow.setLocalFlag(temp.index, LocalFlags.WRAPPED); + if (nonNull) flow.setLocalFlag(temp.index, LocalFlags.NONNULL); + stmts[indexBefore - 1] = module.local_set(temp.index, expr); + stmts.push(module.local_get(temp.index, returnType.toNativeType())); + flow.freeTempLocal(temp); + } + if (!canOverflow) flow.set(FlowFlags.RETURNS_WRAPPED); + if (nonNull) flow.set(FlowFlags.RETURNS_NONNULL); + flow.set(FlowFlags.RETURNS | FlowFlags.TERMINATES); + } + } + + // make constructors return their instance pointer + if (instance.is(CommonFlags.CONSTRUCTOR)) { + let nativeSizeType = this.options.nativeSizeType; + assert(instance.is(CommonFlags.INSTANCE)); + let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); + + if (!flow.is(FlowFlags.TERMINATES)) { + let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); + + // if `this` wasn't accessed before, allocate if necessary and initialize `this` + if (!flow.is(FlowFlags.ALLOCATES)) { + // { + // if (!this) this = + // this.a = X + // this.b = Y + // } + stmts.push( + module.if( + module.unary(nativeSizeType == NativeType.I64 ? UnaryOp.EqzI64 : UnaryOp.EqzI32, + module.local_get(thisLocal.index, nativeSizeType) + ), + module.local_set(thisLocal.index, + this.makeRetain( + this.makeAllocation(classInstance) + ), + ) + ) + ); + this.makeFieldInitialization(classInstance, stmts); + } + this.performAutoreleases(flow, stmts); // `this` is excluded anyway + this.finishAutoreleases(flow, stmts); + stmts.push(module.local_get(thisLocal.index, this.options.nativeSizeType)); + flow.set(FlowFlags.RETURNS | FlowFlags.RETURNS_NONNULL | FlowFlags.TERMINATES); + } + + // check that super has been called if this is a derived class + if ((classInstance).base && !flow.is(FlowFlags.CALLS_SUPER)) { + this.error( + DiagnosticCode.Constructors_for_derived_classes_must_contain_a_super_call, + instance.prototype.declaration.range + ); + } + + // if this is a normal function, make sure that all branches terminate + } else if (returnType != Type.void && !flow.is(FlowFlags.TERMINATES)) { + this.error( + DiagnosticCode.A_function_whose_declared_type_is_not_void_must_return_a_value, + instance.prototype.functionTypeNode.returnType.range + ); + } + + return stmts; } + // === Classes ================================================================================== + + /** Compiles a priorly resolved class. */ compileClass(instance: Class): bool { if (instance.is(CommonFlags.COMPILED)) return true; instance.set(CommonFlags.COMPILED); @@ -1356,36 +1310,24 @@ export class Compiler extends DiagnosticEmitter { break; } case ElementKind.FUNCTION_PROTOTYPE: { - if ( - !(element).is(CommonFlags.GENERIC) - ) { - this.compileFunctionUsingTypeArguments( - element, - [], - makeMap(), - (element).identifierNode - ); + if (!element.is(CommonFlags.GENERIC)) { + let instance = this.resolver.resolveFunction(element, null); + if (instance) this.compileFunction(instance); } break; } case ElementKind.PROPERTY_PROTOTYPE: { - let getter = (element).getterPrototype; - if (getter) { - this.compileFunctionUsingTypeArguments( - getter, - [], - makeMap(), - getter.identifierNode - ); + let getterPrototype = (element).getterPrototype; + if (getterPrototype) { + assert(!getterPrototype.is(CommonFlags.GENERIC)); + let instance = this.resolver.resolveFunction(getterPrototype, null); + if (instance) this.compileFunction(instance); } - let setter = (element).setterPrototype; - if (setter) { - this.compileFunctionUsingTypeArguments( - setter, - [], - makeMap(), - setter.identifierNode - ); + let setterPrototype = (element).setterPrototype; + if (setterPrototype) { + assert(!setterPrototype.is(CommonFlags.GENERIC)); + let instance = this.resolver.resolveFunction(setterPrototype, null); + if (instance) this.compileFunction(instance); } break; } @@ -1401,15 +1343,9 @@ export class Compiler extends DiagnosticEmitter { for (let element of instanceMembers.values()) { switch (element.kind) { case ElementKind.FUNCTION_PROTOTYPE: { - if ( - !(element).is(CommonFlags.GENERIC) - ) { - this.compileFunctionUsingTypeArguments( - element, - [], - makeMap(instance.contextualTypeArguments), - (element).declaration.name - ); + if (!element.is(CommonFlags.GENERIC)) { + let instance = this.resolver.resolveFunction(element, null); + if (instance) this.compileFunction(instance); } break; } @@ -1418,10 +1354,10 @@ export class Compiler extends DiagnosticEmitter { break; } case ElementKind.PROPERTY: { - let getter = (element).getterInstance; - if (getter) this.compileFunction(getter); - let setter = (element).setterInstance; - if (setter) this.compileFunction(setter); + let getterInstance = (element).getterInstance; + if (getterInstance) this.compileFunction(getterInstance); + let setterInstance = (element).setterInstance; + if (setterInstance) this.compileFunction(setterInstance); break; } } @@ -1430,19 +1366,6 @@ export class Compiler extends DiagnosticEmitter { return true; } - compileInterfaceDeclaration( - declaration: InterfaceDeclaration, - typeArguments: NamedTypeNode[], - contextualTypeArguments: Map | null = null, - alternativeReportNode: Node | null = null - ): void { - // TODO - this.error( - DiagnosticCode.Not_implemented, - declaration.range - ); - } - // === Memory =================================================================================== /** Adds a static memory segment with the specified data. */ @@ -1454,7 +1377,7 @@ export class Compiler extends DiagnosticEmitter { return segment; } - /** Ensures that the specified string exists in static memory and returns a pointer to it. */ + /** Ensures that a string exists in static memory and returns a pointer to it. Deduplicates. */ ensureStaticString(stringValue: string): ExpressionRef { var program = this.program; var rtHeaderSize = program.runtimeHeaderSize; @@ -1483,7 +1406,8 @@ export class Compiler extends DiagnosticEmitter { } } - ensureStaticArrayBuffer(elementType: Type, values: ExpressionRef[]): MemorySegment { + /** Adds a buffer to static memory and returns the created segment. */ + private addStaticBuffer(elementType: Type, values: ExpressionRef[]): MemorySegment { var program = this.program; var length = values.length; var byteSize = elementType.byteSize; @@ -1569,7 +1493,8 @@ export class Compiler extends DiagnosticEmitter { return this.addMemorySegment(buf); } - ensureStaticArrayHeader(elementType: Type, bufferSegment: MemorySegment): MemorySegment { + /** Adds an array header to static memory and returns the created segment. */ + private addStaticArrayHeader(elementType: Type, bufferSegment: MemorySegment): MemorySegment { var program = this.program; var runtimeHeaderSize = program.runtimeHeaderSize; var arrayPrototype = assert(program.arrayPrototype); @@ -1594,24 +1519,27 @@ export class Compiler extends DiagnosticEmitter { // === Table ==================================================================================== /** Ensures that a table entry exists for the specified function and returns its index. */ - ensureFunctionTableEntry(func: Function): i32 { - assert(func.is(CommonFlags.COMPILED)); - if (func.functionTableIndex >= 0) { - return func.functionTableIndex; + ensureFunctionTableEntry(instance: Function): i32 { + assert(instance.is(CommonFlags.COMPILED)); + var index = instance.functionTableIndex; + if (index >= 0) { + assert(index != 0); // first elem must be blank + return index; } var functionTable = this.functionTable; - var index = 1 + functionTable.length; // first elem is blank - if (!func.is(CommonFlags.TRAMPOLINE) && func.signature.requiredParameters < func.signature.parameterTypes.length) { + index = 1 + functionTable.length; // first elem is blank + if (!instance.is(CommonFlags.TRAMPOLINE) && instance.signature.requiredParameters < instance.signature.parameterTypes.length) { // insert the trampoline if the function has optional parameters - func = this.ensureTrampoline(func); + instance = this.ensureTrampoline(instance); } - functionTable.push(func.internalName); - func.functionTableIndex = index; + functionTable.push(instance.internalName); + instance.functionTableIndex = index; return index; } // === Statements =============================================================================== + /** Compiles a top level statement (incl. function declarations etc.) to the specified body. */ compileTopLevelStatement(statement: Statement, body: ExpressionRef[]): void { switch (statement.kind) { case NodeKind.CLASSDECLARATION: { @@ -1697,8 +1625,11 @@ export class Compiler extends DiagnosticEmitter { } } + /** Compiles a statement. */ compileStatement( + /** Statement to compile. */ statement: Statement, + /** Whether this is the last statement of the body, if known. */ isLastInBody: bool = false ): ExpressionRef { var module = this.module; @@ -1783,9 +1714,13 @@ export class Compiler extends DiagnosticEmitter { return stmt; } + /** Compiles a series of statements. */ compileStatements( + /** Statements to compile. */ statements: Statement[], + /** Whether this is an immediate body statement. */ isBody: bool = false, + /** Statements to append to that is also returned. Created if omitted. */ stmts: ExpressionRef[] | null = null ): ExpressionRef[] { var numStatements = statements.length; @@ -1816,7 +1751,7 @@ export class Compiler extends DiagnosticEmitter { return stmts; } - compileBlockStatement( + private compileBlockStatement( statement: BlockStatement ): ExpressionRef { var statements = statement.statements; @@ -1832,7 +1767,7 @@ export class Compiler extends DiagnosticEmitter { return this.module.flatten(stmts); } - compileBreakStatement( + private compileBreakStatement( statement: BreakStatement ): ExpressionRef { var module = this.module; @@ -1865,7 +1800,7 @@ export class Compiler extends DiagnosticEmitter { return module.flatten(stmts); } - compileContinueStatement( + private compileContinueStatement( statement: ContinueStatement ): ExpressionRef { var module = this.module; @@ -1900,7 +1835,7 @@ export class Compiler extends DiagnosticEmitter { return module.flatten(stmts); } - compileDoStatement( + private compileDoStatement( /** Statement to compile. */ statement: DoStatement ): ExpressionRef { @@ -2027,19 +1962,19 @@ export class Compiler extends DiagnosticEmitter { return expr; } - compileEmptyStatement( + private compileEmptyStatement( statement: EmptyStatement ): ExpressionRef { return this.module.nop(); } - compileExpressionStatement( + private compileExpressionStatement( statement: ExpressionStatement ): ExpressionRef { return this.compileExpression(statement.expression, Type.void, Constraints.CONV_IMPLICIT); } - compileForStatement( + private compileForStatement( /** Statement to compile. */ statement: ForStatement ): ExpressionRef { @@ -2238,7 +2173,7 @@ export class Compiler extends DiagnosticEmitter { return module.flatten(stmts); } - compileIfStatement( + private compileIfStatement( statement: IfStatement ): ExpressionRef { var module = this.module; @@ -2344,33 +2279,7 @@ export class Compiler extends DiagnosticEmitter { } } - /** Compiles an expression that is about to be returned, taking special care of retaining and setting flow states. */ - compileReturnedExpression( - /** Expression to compile. */ - expression: Expression, - /** Return type of the function. */ - returnType: Type, - /** Constraints indicating contextual conditions. */ - constraints: Constraints = Constraints.NONE - ): ExpressionRef { - // pretend to retain the expression immediately so the autorelease, if any, is skipped - var expr = this.compileExpression(expression, returnType, constraints | Constraints.WILL_RETAIN); - var flow = this.currentFlow; - if (returnType.isManaged) { - // check if that worked, and if it didn't, keep the reference alive - if (!this.skippedAutoreleases.has(expr)) { - let index = this.tryUndoAutorelease(expr, flow); - if (index == -1) expr = this.makeRetain(expr); - this.skippedAutoreleases.add(expr); - } - } - // remember return states - if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); - if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); - return expr; - } - - compileReturnStatement( + private compileReturnStatement( statement: ReturnStatement, isLastInBody: bool ): ExpressionRef { @@ -2441,7 +2350,7 @@ export class Compiler extends DiagnosticEmitter { return module.flatten(stmts); } - compileSwitchStatement( + private compileSwitchStatement( statement: SwitchStatement ): ExpressionRef { var module = this.module; @@ -2555,7 +2464,7 @@ export class Compiler extends DiagnosticEmitter { return currentBlock; } - compileThrowStatement( + private compileThrowStatement( statement: ThrowStatement ): ExpressionRef { var flow = this.currentFlow; @@ -2578,7 +2487,7 @@ export class Compiler extends DiagnosticEmitter { return this.module.flatten(stmts); } - compileTryStatement( + private compileTryStatement( statement: TryStatement ): ExpressionRef { // TODO: can't yet support something like: try { return ... } finally { ... } @@ -2591,7 +2500,7 @@ export class Compiler extends DiagnosticEmitter { } /** Compiles a variable statement. Returns `0` if an initializer is not necessary. */ - compileVariableStatement( + private compileVariableStatement( statement: VariableStatement ): ExpressionRef { var module = this.module; @@ -2799,7 +2708,7 @@ export class Compiler extends DiagnosticEmitter { : module.flatten(initializers); } - compileVoidStatement( + private compileVoidStatement( statement: VoidStatement ): ExpressionRef { return this.compileExpression(statement.expression, Type.void, @@ -2807,7 +2716,7 @@ export class Compiler extends DiagnosticEmitter { ); } - compileWhileStatement( + private compileWhileStatement( /** Statement to compile. */ statement: WhileStatement ): ExpressionRef { @@ -3158,7 +3067,33 @@ export class Compiler extends DiagnosticEmitter { ); } - convertExpression( + /** Compiles an expression that is about to be returned, taking special care of retaining and setting flow states. */ + private compileReturnedExpression( + /** Expression to compile. */ + expression: Expression, + /** Return type of the function. */ + returnType: Type, + /** Constraints indicating contextual conditions. */ + constraints: Constraints = Constraints.NONE + ): ExpressionRef { + // pretend to retain the expression immediately so the autorelease, if any, is skipped + var expr = this.compileExpression(expression, returnType, constraints | Constraints.WILL_RETAIN); + var flow = this.currentFlow; + if (returnType.isManaged) { + // check if that worked, and if it didn't, keep the reference alive + if (!this.skippedAutoreleases.has(expr)) { + let index = this.tryUndoAutorelease(expr, flow); + if (index == -1) expr = this.makeRetain(expr); + this.skippedAutoreleases.add(expr); + } + } + // remember return states + if (!flow.canOverflow(expr, returnType)) flow.set(FlowFlags.RETURNS_WRAPPED); + if (flow.isNonnull(expr, returnType)) flow.set(FlowFlags.RETURNS_NONNULL); + return expr; + } + + private convertExpression( expr: ExpressionRef, /** Original type. */ fromType: Type, @@ -3351,7 +3286,7 @@ export class Compiler extends DiagnosticEmitter { : expr; } - compileAssertionExpression( + private compileAssertionExpression( expression: AssertionExpression, contextualType: Type, constraints: Constraints @@ -3404,7 +3339,7 @@ export class Compiler extends DiagnosticEmitter { private f32PowInstance: Function | null = null; private f64PowInstance: Function | null = null; - compileBinaryExpression( + private compileBinaryExpression( expression: BinaryExpression, contextualType: Type, constraints: Constraints @@ -5404,7 +5339,7 @@ export class Compiler extends DiagnosticEmitter { ); } - compileUnaryOverload( + private compileUnaryOverload( operatorInstance: Function, value: Expression, valueExpr: ExpressionRef, @@ -5415,7 +5350,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeCallDirect(operatorInstance, [ valueExpr ], reportNode, false); } - compileBinaryOverload( + private compileBinaryOverload( operatorInstance: Function, left: Expression, leftExpr: ExpressionRef, @@ -5441,7 +5376,7 @@ export class Compiler extends DiagnosticEmitter { return this.makeCallDirect(operatorInstance, [ leftExpr, rightExpr ], reportNode); } - compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef { + private compileAssignment(expression: Expression, valueExpression: Expression, contextualType: Type): ExpressionRef { var program = this.program; var resolver = program.resolver; var flow = this.currentFlow; @@ -5854,7 +5789,7 @@ export class Compiler extends DiagnosticEmitter { } /** Makes an assignment to a field, possibly retaining and releasing affected references. */ - makeFieldAssignment( + private makeFieldAssignment( /** The field to assign to. */ field: Field, /** The value to assign. */ @@ -5942,7 +5877,7 @@ export class Compiler extends DiagnosticEmitter { } /** Compiles a call expression according to the specified context. */ - compileCallExpression( + private compileCallExpression( /** Call expression to compile. */ expression: CallExpression, /** Contextual type indicating the return type the caller expects, if any. */ @@ -6288,13 +6223,14 @@ export class Compiler extends DiagnosticEmitter { // Inline if explicitly requested if (instance.hasDecorator(DecoratorFlags.INLINE)) { assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense - if (this.currentInlineFunctions.includes(instance)) { + let inlineStack = this.inlineStack; + if (inlineStack.includes(instance)) { this.warning( DiagnosticCode.Function_0_cannot_be_inlined_into_itself, reportNode.range, instance.internalName ); } else { - this.currentInlineFunctions.push(instance); + inlineStack.push(instance); let parameterTypes = signature.parameterTypes; assert(numArguments <= parameterTypes.length); // compile argument expressions @@ -6313,7 +6249,7 @@ export class Compiler extends DiagnosticEmitter { this.skippedAutoreleases.add(expr); } } - this.currentInlineFunctions.pop(); + inlineStack.pop(); return expr; } } @@ -6533,10 +6469,10 @@ export class Compiler extends DiagnosticEmitter { minArguments ? module.binary( BinaryOp.SubI32, - module.global_get(BuiltinSymbols.argc, NativeType.I32), + module.global_get("~argumentsLength", NativeType.I32), module.i32(minArguments) ) - : module.global_get(BuiltinSymbols.argc, NativeType.I32) + : module.global_get("~argumentsLength", NativeType.I32) ) ]), module.unreachable() @@ -6591,35 +6527,13 @@ export class Compiler extends DiagnosticEmitter { return trampoline; } - /** Makes sure that the argument count helper global is present and returns its name. */ - private ensureArgcVar(): string { - if (!this.argcVar) { + /** Makes sure that the arguments length helper global is present. */ + ensureBuiltinArgumentsLength(): void { + if (!this.builtinArgumentsLength) { let module = this.module; - this.argcVar = module.addGlobal( - BuiltinSymbols.argc, - NativeType.I32, - true, - module.i32(0) - ); - } - return BuiltinSymbols.argc; - } - - /** Makes sure that the argument count helper setter is present and returns its name. */ - private ensureArgcSet(): string { - if (!this.argcSet) { - let module = this.module; - this.argcSet = module.addFunction(BuiltinSymbols.setargc, - NativeType.I32, - NativeType.None, - null, - module.global_set(this.ensureArgcVar(), - module.local_get(0, NativeType.I32) - ) - ); - module.addFunctionExport(BuiltinSymbols.setargc, "__setargc"); + this.builtinArgumentsLength = module.addGlobal("~argumentsLength", NativeType.I32, true, module.i32(0)); + module.addGlobalExport("~argumentsLength", "__argumentsLength"); } - return BuiltinSymbols.setargc; } // @@ -6917,13 +6831,14 @@ export class Compiler extends DiagnosticEmitter { ): ExpressionRef { if (instance.hasDecorator(DecoratorFlags.INLINE)) { assert(!instance.is(CommonFlags.TRAMPOLINE)); // doesn't make sense - if (this.currentInlineFunctions.includes(instance)) { + let inlineStack = this.inlineStack; + if (inlineStack.includes(instance)) { this.warning( DiagnosticCode.Function_0_cannot_be_inlined_into_itself, reportNode.range, instance.internalName ); } else { - this.currentInlineFunctions.push(instance); + inlineStack.push(instance); let expr: ExpressionRef; if (instance.is(CommonFlags.INSTANCE)) { let theOperands = assert(operands); @@ -6940,7 +6855,7 @@ export class Compiler extends DiagnosticEmitter { this.skippedAutoreleases.add(expr); } } - this.currentInlineFunctions.pop(); + inlineStack.pop(); return expr; } } @@ -7027,8 +6942,9 @@ export class Compiler extends DiagnosticEmitter { this.skippedAutoreleases.add(expr); } } + this.ensureBuiltinArgumentsLength(); return module.block(null, [ - module.global_set(this.ensureArgcVar(), module.i32(numArguments)), + module.global_set("~argumentsLength", module.i32(numArguments)), expr ], this.currentType.toNativeType()); } @@ -7123,8 +7039,9 @@ export class Compiler extends DiagnosticEmitter { } var returnType = signature.returnType; + this.ensureBuiltinArgumentsLength(); var expr = module.block(null, [ - module.global_set(this.ensureArgcVar(), // might be calling a trampoline + module.global_set("~argumentsLength", // might be calling a trampoline module.i32(numArguments) ), module.call_indirect( @@ -7148,7 +7065,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - compileCommaExpression( + private compileCommaExpression( expression: CommaExpression, contextualType: Type, constraints: Constraints @@ -7165,7 +7082,7 @@ export class Compiler extends DiagnosticEmitter { return this.module.flatten(exprs, this.currentType.toNativeType()); } - compileElementAccessExpression( + private compileElementAccessExpression( expression: ElementAccessExpression, contextualType: Type, constraints: Constraints @@ -7196,7 +7113,7 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } - compileFunctionExpression( + private compileFunctionExpression( expression: FunctionExpression, contextualSignature: Signature | null, constraints: Constraints @@ -7319,12 +7236,9 @@ export class Compiler extends DiagnosticEmitter { // otherwise compile like a normal function } else { - instance = this.compileFunctionUsingTypeArguments( - prototype, - [], - contextualTypeArguments - ); + instance = this.resolver.resolveFunction(prototype, null, contextualTypeArguments); if (!instance) return this.module.unreachable(); + this.compileFunction(instance); this.currentType = instance.signature.type; } @@ -7345,12 +7259,7 @@ export class Compiler extends DiagnosticEmitter { } } - /** - * Compiles an identifier in the specified context. - * @param retainConstantType Retains the type of inlined constants if `true`, otherwise - * precomputes them according to context. - */ - compileIdentifierExpression( + private compileIdentifierExpression( expression: IdentifierExpression, contextualType: Type, constraints: Constraints @@ -7561,7 +7470,7 @@ export class Compiler extends DiagnosticEmitter { return this.module.unreachable(); } - compileInstanceOfExpression( + private compileInstanceOfExpression( expression: InstanceOfExpression, contextualType: Type, constraints: Constraints @@ -7693,7 +7602,7 @@ export class Compiler extends DiagnosticEmitter { ], NativeType.I32); } - compileLiteralExpression( + private compileLiteralExpression( expression: LiteralExpression, contextualType: Type, constraints: Constraints, @@ -7785,7 +7694,7 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } - compileStringLiteral( + private compileStringLiteral( expression: StringLiteralExpression, constraints: Constraints ): ExpressionRef { @@ -7799,7 +7708,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - compileArrayLiteral( + private compileArrayLiteral( elementType: Type, expressions: (Expression | null)[], constraints: Constraints, @@ -7870,13 +7779,13 @@ export class Compiler extends DiagnosticEmitter { flow.freeTempLocal(tempDataStart); let runtimeHeaderSize = program.runtimeHeaderSize; - let bufferSegment = this.ensureStaticArrayBuffer(elementType, values); + let bufferSegment = this.addStaticBuffer(elementType, values); let bufferAddress = i64_add(bufferSegment.offset, i64_new(runtimeHeaderSize)); // make both the buffer and array header static if assigned to a global. this can't be done // if inside of a function because each invocation must create a new array reference then. if (constraints & Constraints.PREFER_STATIC) { - let arraySegment = this.ensureStaticArrayHeader(elementType, bufferSegment); + let arraySegment = this.addStaticArrayHeader(elementType, bufferSegment); let arrayAddress = i64_add(arraySegment.offset, i64_new(runtimeHeaderSize)); this.currentType = arrayType; return program.options.isWasm64 @@ -7988,7 +7897,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef { + private compileObjectLiteral(expression: ObjectLiteralExpression, contextualType: Type): ExpressionRef { var module = this.module; // contextual type must be a class @@ -8077,7 +7986,7 @@ export class Compiler extends DiagnosticEmitter { return module.flatten(exprs, this.options.nativeSizeType); } - compileNewExpression( + private compileNewExpression( expression: NewExpression, contextualType: Type, constraints: Constraints @@ -8228,7 +8137,7 @@ export class Compiler extends DiagnosticEmitter { return instance; } - compileInstantiate( + private compileInstantiate( /** Class to instantiate. */ classInstance: Class, /** Constructor arguments. */ @@ -8253,12 +8162,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - /** - * Compiles a property access in the specified context. - * @param retainConstantType Retains the type of inlined constants if `true`, otherwise - * precomputes them according to context. - */ - compilePropertyAccessExpression( + private compilePropertyAccessExpression( expression: PropertyAccessExpression, ctxType: Type, constraints: Constraints @@ -8339,18 +8243,11 @@ export class Compiler extends DiagnosticEmitter { let prototype = target; if (prototype.is(CommonFlags.STATIC)) { - let instance = this.compileFunctionUsingTypeArguments( - prototype, - [], - makeMap(), - expression, - ); - if (instance == null) { - return module.unreachable(); - } else { - this.currentType = instance.type; - return module.i32(this.ensureFunctionTableEntry(instance)); - } + let instance = this.resolver.resolveFunction(prototype, null); + if (!instance) return module.unreachable(); + if (!this.compileFunction(instance)) return module.unreachable(); + this.currentType = instance.type; + return module.i32(this.ensureFunctionTableEntry(instance)); } this.error( @@ -8367,7 +8264,7 @@ export class Compiler extends DiagnosticEmitter { return module.unreachable(); } - compileTernaryExpression( + private compileTernaryExpression( expression: TernaryExpression, ctxType: Type, constraints: Constraints @@ -8468,7 +8365,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - compileUnaryPostfixExpression( + private compileUnaryPostfixExpression( expression: UnaryPostfixExpression, contextualType: Type, constraints: Constraints @@ -8725,7 +8622,7 @@ export class Compiler extends DiagnosticEmitter { ], nativeType); // result of 'x++' / 'x--' might overflow } - compileUnaryPrefixExpression( + private compileUnaryPrefixExpression( expression: UnaryPrefixExpression, contextualType: Type, constraints: Constraints @@ -9090,7 +8987,7 @@ export class Compiler extends DiagnosticEmitter { ); } - compileTypeof( + private compileTypeof( expression: UnaryPrefixExpression, contextualType: Type, constraints: Constraints @@ -9560,11 +9457,10 @@ function mangleImportName( var mangleImportName_moduleName: string; var mangleImportName_elementName: string; -/** Evaluates the kind of a condition from its expression. */ +/** Evaluates the kind of a boolean condition from its expression. */ function evaluateConditionKind(expr: ExpressionRef): ConditionKind { - // TODO: String(""), Number(0) ? + assert(getExpressionType(expr) == NativeType.I32); if (getExpressionId(expr) == ExpressionId.Const) { - assert(getExpressionType(expr) == NativeType.I32); return getConstValueI32(expr) ? ConditionKind.TRUE : ConditionKind.FALSE; diff --git a/src/resolver.ts b/src/resolver.ts index 2fa05ee9d9..8e84f43da2 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -277,7 +277,7 @@ export class Resolver extends DiagnosticEmitter { // Handle special built-in types if (isSimpleType) { - switch (nameNode.identifier.symbol) { + switch (nameNode.identifier.text) { case CommonSymbols.native: return this.resolveBuiltinNativeType(node, ctxElement, ctxTypes, reportMode); case CommonSymbols.indexof: return this.resolveBuiltinIndexofType(node, ctxElement, ctxTypes, reportMode); case CommonSymbols.valueof: return this.resolveBuiltinValueofType(node, ctxElement, ctxTypes, reportMode); @@ -712,7 +712,7 @@ export class Resolver extends DiagnosticEmitter { } return this.resolveFunctionInclTypeArguments( prototype, - node.typeArguments, + typeArguments, ctxFlow.actualFunction, makeMap(ctxFlow.contextualTypeArguments), // don't inherit node, diff --git a/tests/compiler/assert-nonnull.optimized.wat b/tests/compiler/assert-nonnull.optimized.wat index adb99e6249..536902c55e 100644 --- a/tests/compiler/assert-nonnull.optimized.wat +++ b/tests/compiler/assert-nonnull.optimized.wat @@ -8,7 +8,8 @@ (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s") (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y") (table $0 1 funcref) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "testVar" (func $assert-nonnull/testVar)) (export "testObj" (func $assert-nonnull/testObj)) @@ -141,7 +142,7 @@ ) (func $assert-nonnull/testFn (; 10 ;) (param $0 i32) (result i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) ) @@ -152,14 +153,14 @@ unreachable end i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) ) (func $assert-nonnull/testRet (; 12 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) local.tee $0 @@ -171,7 +172,7 @@ ) (func $assert-nonnull/testObjFn (; 13 ;) (param $0 i32) (result i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 call_indirect (type $none_=>_i32) @@ -179,7 +180,7 @@ (func $assert-nonnull/testObjRet (; 14 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 call_indirect (type $none_=>_i32) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index be43b674ed..5c4dfa8d68 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -10,7 +10,8 @@ (data (i32.const 80) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00~\00l\00i\00b\00/\00a\00r\00r\00a\00y\00.\00t\00s\00") (data (i32.const 128) "^\00\00\00\01\00\00\00\01\00\00\00^\00\00\00E\00l\00e\00m\00e\00n\00t\00 \00t\00y\00p\00e\00 \00m\00u\00s\00t\00 \00b\00e\00 \00n\00u\00l\00l\00a\00b\00l\00e\00 \00i\00f\00 \00a\00r\00r\00a\00y\00 \00i\00s\00 \00h\00o\00l\00e\00y\00") (table $0 1 funcref) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "testVar" (func $assert-nonnull/testVar)) (export "testObj" (func $assert-nonnull/testObj)) @@ -282,7 +283,7 @@ (func $assert-nonnull/testFn (; 14 ;) (param $0 i32) (result i32) (local $1 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) local.tee $1 @@ -299,7 +300,7 @@ end local.set $2 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 call_indirect (type $none_=>_i32) local.tee $1 @@ -308,7 +309,7 @@ (local $1 i32) (local $2 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) local.tee $1 @@ -331,7 +332,7 @@ call $~lib/rt/stub/__retain local.set $0 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 call_indirect (type $none_=>_i32) @@ -348,7 +349,7 @@ call $~lib/rt/stub/__retain local.set $0 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 call_indirect (type $none_=>_i32) diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index 03d33d4aa1..2ecddfff81 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -2,11 +2,12 @@ (type $none_=>_none (func)) (memory $0 1) (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start (; 0 ;) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength ) ) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index 32a3f9934f..3c778a2b32 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -8,7 +8,8 @@ (memory $0 1) (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00i\00n\00f\00e\00r\00r\00e\00d\00.\00t\00s\00") (table $0 1 funcref) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $call-inferred/foo (; 1 ;) (param $0 i32) (result i32) @@ -27,7 +28,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -79,7 +80,7 @@ unreachable end i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength f32.const 0 call $call-inferred/bar|trampoline f32.const 42 diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index 36f177effa..cc291a3dbd 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -5,7 +5,8 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $call-optional/opt (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -20,7 +21,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -40,7 +41,7 @@ ) (func $start:call-optional (; 3 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 0 i32.const 0 @@ -54,7 +55,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 0 @@ -84,7 +85,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 0 i32.const 0 @@ -98,7 +99,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 0 @@ -114,7 +115,7 @@ unreachable end i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 5 diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 0324379363..8b25a80acb 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -7,8 +7,9 @@ (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00c\00a\00l\00l\00-\00o\00p\00t\00i\00o\00n\00a\00l\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 1) $call-optional/opt|trampoline) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $call-optional/optIndirect (mut i32) (i32.const 1)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $call-optional/opt (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -23,7 +24,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -43,7 +44,7 @@ ) (func $start:call-optional (; 3 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 0 i32.const 0 @@ -60,7 +61,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 0 @@ -92,7 +93,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 0 i32.const 0 @@ -110,7 +111,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 0 @@ -128,7 +129,7 @@ unreachable end i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 i32.const 5 diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index 53be60066b..a45f734c96 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -2,11 +2,12 @@ (type $none_=>_none (func)) (memory $0 1) (data (i32.const 16) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start (; 0 ;) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength ) ) diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index 522981883c..c576144962 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -8,7 +8,8 @@ (data (i32.const 16) "0\00\00\00\01\00\00\00\01\00\00\000\00\00\00c\00l\00a\00s\00s\00-\00s\00t\00a\00t\00i\00c\00-\00f\00u\00n\00c\00t\00i\00o\00n\00.\00t\00s\00") (table $0 2 funcref) (elem (i32.const 1) $class-static-function/Example.staticFunc) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $class-static-function/Example.staticFunc (; 1 ;) (result i32) @@ -16,7 +17,7 @@ ) (func $class-static-function/call (; 2 ;) (param $0 i32) (result i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 9ddc149f9a..4881ad327d 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -15,12 +15,12 @@ (global $exports/outer.inner.a i32 (i32.const 42)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $exports/Car i32 (i32.const 3)) (global $exports/vehicles.Car i32 (i32.const 4)) (export "memory" (memory $0)) (export "add" (func $exports/add)) - (export "__setargc" (func $~lib/setargc)) + (export "__argumentsLength" (global $~argumentsLength)) (export "subOpt" (func $exports/subOpt|trampoline)) (export "math.sub" (func $exports/subOpt)) (export "Animal.CAT" (global $exports/Animal.CAT)) @@ -151,7 +151,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -165,15 +165,11 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 10 ;) (param $0 i32) - local.get $0 - global.set $~lib/argc - ) - (func $exports/Car#constructor|trampoline (; 11 ;) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 10 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -196,11 +192,11 @@ i32.store local.get $0 ) - (func $exports/vehicles.Car#constructor|trampoline (; 12 ;) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 11 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 7d3038612c..6faa0915ed 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -1,8 +1,8 @@ (module (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) (type $i32_=>_i32 (func (param i32) (result i32))) - (type $i32_=>_none (func (param i32))) (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_none (func (param i32))) (type $none_=>_i32 (func (result i32))) (type $none_=>_none (func)) (memory $0 0) @@ -17,12 +17,12 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $exports/Car i32 (i32.const 3)) (global $exports/vehicles.Car i32 (i32.const 4)) (export "memory" (memory $0)) (export "add" (func $exports/add)) - (export "__setargc" (func $~lib/setargc)) + (export "__argumentsLength" (global $~argumentsLength)) (export "subOpt" (func $exports/subOpt|trampoline)) (export "math.sub" (func $exports/math.sub)) (export "Animal.CAT" (global $exports/Animal.CAT)) @@ -258,7 +258,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -272,24 +272,20 @@ local.get $1 call $exports/subOpt ) - (func $~lib/setargc (; 18 ;) (param $0 i32) - local.get $0 - global.set $~lib/argc - ) - (func $Car#get:doors (; 19 ;) (param $0 i32) (result i32) + (func $Car#get:doors (; 18 ;) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $Car#set:doors (; 20 ;) (param $0 i32) (param $1 i32) + (func $Car#set:doors (; 19 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/Car#constructor|trampoline (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (func $exports/Car#constructor|trampoline (; 20 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -301,20 +297,20 @@ local.get $1 call $exports/Car#constructor ) - (func $vehicles.Car#get:doors (; 22 ;) (param $0 i32) (result i32) + (func $vehicles.Car#get:doors (; 21 ;) (param $0 i32) (result i32) local.get $0 i32.load ) - (func $vehicles.Car#set:doors (; 23 ;) (param $0 i32) (param $1 i32) + (func $vehicles.Car#set:doors (; 22 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 i32.store ) - (func $exports/vehicles.Car#constructor|trampoline (; 24 ;) (param $0 i32) (param $1 i32) (result i32) + (func $exports/vehicles.Car#constructor|trampoline (; 23 ;) (param $0 i32) (param $1 i32) (result i32) block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat index 02b38eb5b1..a83aeebb09 100644 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ b/tests/compiler/features/js-bigint-integration.optimized.wat @@ -8,7 +8,7 @@ (memory $0 1) (data (i32.const 16) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "internalValue" (global $features/js-bigint-integration/internalValue)) @@ -41,12 +41,12 @@ i64.const 9007199254740991 ) (func $start (; 4 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:features/js-bigint-integration ) diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat index b5b79f43ac..52a6193f31 100644 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ b/tests/compiler/features/js-bigint-integration.untouched.wat @@ -9,7 +9,7 @@ (data (i32.const 16) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s\00") (table $0 1 funcref) (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "internalValue" (global $features/js-bigint-integration/internalValue)) @@ -44,12 +44,12 @@ global.get $features/js-bigint-integration/internalValue ) (func $start (; 4 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:features/js-bigint-integration ) diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat index dbf371f466..5e4c47ad84 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/features/mutable-globals.optimized.wat @@ -6,7 +6,7 @@ (memory $0 1) (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") (global $features/mutable-globals/internal (mut i32) (i32.const 124)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "external" (global $features/mutable-globals/external)) @@ -66,12 +66,12 @@ end ) (func $start (; 2 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:features/mutable-globals ) diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat index a6b43bedde..3c3c84bb88 100644 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ b/tests/compiler/features/mutable-globals.untouched.wat @@ -7,7 +7,7 @@ (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (global $features/mutable-globals/internal (mut i32) (i32.const 124)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "external" (global $features/mutable-globals/external)) @@ -71,12 +71,12 @@ end ) (func $start (; 2 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:features/mutable-globals ) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index a045335f4f..61d97e31fc 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -9,7 +9,8 @@ (data (i32.const 16) ",\00\00\00\01\00\00\00\01\00\00\00,\00\00\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") (table $0 12 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|0 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $start:function-expression~anonymous|2) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start:function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) @@ -28,7 +29,7 @@ ) (func $function-expression/testOmitted (; 5 ;) (param $0 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 local.get $0 @@ -42,13 +43,13 @@ ) (func $start:function-expression (; 8 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 5 call $function-expression/testOmitted i32.const 3 @@ -86,7 +87,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call $start:function-expression~anonymous|3 @@ -101,9 +102,9 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength ) (func $start (; 9 ;) call $start:function-expression diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 6797c23dc5..643228f0f5 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -10,10 +10,11 @@ (table $0 12 funcref) (elem (i32.const 1) $start:function-expression~anonymous|0 $start:function-expression~anonymous|1 $start:function-expression~someName $start:function-expression~anonymous|2 $start:function-expression~anonymous|3 $start:function-expression~anonymous|4 $start:function-expression~anonymous|5 $function-expression/testOmittedReturn1~anonymous|0 $function-expression/testOmittedReturn2~anonymous|0 $function-expression/testOmittedReturn3~anonymous|0 $function-expression/testNullable~anonymous|0) (global $function-expression/f1 (mut i32) (i32.const 1)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-expression/f2 (mut i32) (i32.const 2)) (global $function-expression/f3 (mut i32) (i32.const 3)) (global $function-expression/f4 (mut i32) (i32.const 4)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start:function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) @@ -35,7 +36,7 @@ ) (func $function-expression/testOmitted (; 6 ;) (param $0 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 local.get $0 @@ -83,7 +84,7 @@ ) (func $start:function-expression (; 17 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 global.get $function-expression/f1 call_indirect (type $i32_=>_i32) @@ -99,7 +100,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 2 global.get $function-expression/f2 call_indirect (type $i32_=>_i32) @@ -115,11 +116,11 @@ unreachable end i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $function-expression/f3 call_indirect (type $none_=>_none) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $function-expression/f4 call_indirect (type $none_=>_i32) i32.const 1 @@ -173,7 +174,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call $function-expression/testOmittedReturn1 @@ -190,7 +191,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call $function-expression/testOmittedReturn2 @@ -207,7 +208,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call $function-expression/testOmittedReturn3 diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index acd1817c65..b6d4fafbcb 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -11,8 +11,9 @@ (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0) (global $function-types/i32Adder (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $function-types/makeAdder~anonymous|0 (; 1 ;) (param $0 i32) (param $1 i32) (result i32) @@ -32,7 +33,7 @@ ) (func $function-types/doAddWithFn (; 4 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $1 local.get $2 @@ -42,7 +43,7 @@ i32.const 1 global.set $function-types/i32Adder i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call $function-types/makeAdder~anonymous|0 @@ -59,7 +60,7 @@ i32.const 2 global.set $function-types/i64Adder i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i64.const 10 i64.const 20 call $function-types/makeAdder~anonymous|0 @@ -74,7 +75,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength f64.const 1.5 f64.const 2.5 call $function-types/makeAdder~anonymous|0 @@ -103,7 +104,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 3 i32.const 4 call $function-types/makeAdder~anonymous|0 @@ -132,7 +133,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 i32.const 1 diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index ee705b4b00..f8ced1145d 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -12,8 +12,9 @@ (table $0 5 funcref) (elem (i32.const 1) $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/makeAdder~anonymous|0 $function-types/addI32) (global $function-types/i32Adder (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $function-types/i64Adder (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $function-types/makeAdder~anonymous|0 (; 1 ;) (param $0 i32) (param $1 i32) (result i32) @@ -42,7 +43,7 @@ ) (func $function-types/doAddWithFn (; 7 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $1 local.get $2 @@ -50,7 +51,7 @@ ) (func $function-types/doAdd (; 8 ;) (param $0 i32) (param $1 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $1 call $function-types/makeAdder @@ -63,7 +64,7 @@ ) (func $function-types/makeAndAdd (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $1 local.get $2 @@ -73,7 +74,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 2 i32.sub br_table $0of1 $1of1 $outOfRange @@ -92,7 +93,7 @@ call $function-types/makeAdder global.set $function-types/i32Adder i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 global.get $function-types/i32Adder @@ -111,7 +112,7 @@ call $function-types/makeAdder global.set $function-types/i64Adder i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i64.const 10 i64.const 20 global.get $function-types/i64Adder @@ -128,7 +129,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength f64.const 1.5 f64.const 2.5 call $function-types/makeAdder @@ -189,7 +190,7 @@ unreachable end i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 i32.const 0 diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 5123b3b9ba..78fd78097a 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -5,7 +5,8 @@ (memory $0 0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) @@ -79,7 +80,7 @@ (func $getter-call/test (; 2 ;) (result i32) call $~lib/rt/stub/__alloc i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 42 ) (func $start (; 3 ;) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index 1f418c1e58..feac8d4d3f 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -9,8 +9,9 @@ (elem (i32.const 1) $getter-call/C#get:x~anonymous|0) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) (start $start) @@ -154,7 +155,7 @@ call $getter-call/C#constructor local.set $0 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $getter-call/C#get:x call_indirect (type $none_=>_i32) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index e06bc706a4..979bd8ed66 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -7,7 +7,8 @@ (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00i\00n\00f\00e\00r\00-\00g\00e\00n\00e\00r\00i\00c\00.\00t\00s") (data (i32.const 64) "\0c\00\00\00\01\00\00\00\00\00\00\00\0c\00\00\00\00\00\80?\00\00\00@\00\00@@") (data (i32.const 96) "\10\00\00\00\01\00\00\00\03\00\00\00\10\00\00\00P\00\00\00P\00\00\00\0c\00\00\00\03") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test1" (func $infer-generic/test1)) (export "test2" (func $infer-generic/test2)) @@ -43,7 +44,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 116 i32.load diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index bd3a07c032..7fa4d6838c 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -15,7 +15,8 @@ (table $0 2 funcref) (elem (i32.const 1) $start:infer-generic~anonymous|0) (global $infer-generic/arr i32 (i32.const 112)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test1" (func $infer-generic/test1)) (export "test2" (func $infer-generic/test2)) @@ -80,7 +81,7 @@ local.get $6 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $0 i32.load offset=4 diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 11ef43f1a3..384ce04b77 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -7,9 +7,10 @@ (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00i\00n\00l\00i\00n\00i\00n\00g\00.\00t\00s") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) (start $start) @@ -185,7 +186,7 @@ ) (func $start (; 5 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 64 global.set $~lib/rt/stub/startOffset i32.const 64 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 2dba59eb91..5754c4569e 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -11,10 +11,11 @@ (table $0 2 funcref) (elem (i32.const 1) $inlining/func_fe~anonymous|0) (global $inlining/constantGlobal i32 (i32.const 1)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 56)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) (start $start) @@ -214,7 +215,7 @@ i32.const 0 local.set $2 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 2 i32.const 1 call_indirect (type $i32_=>_i32) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index a7e2432951..87808cc46b 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -10,9 +10,10 @@ (data (i32.const 16) "<\00\00\00\01\00\00\00\01\00\00\00<\00\00\00r\00e\00s\00o\00l\00v\00e\00-\00f\00u\00n\00c\00t\00i\00o\00n\00-\00e\00x\00p\00r\00e\00s\00s\00i\00o\00n\00.\00t\00s") (data (i32.const 96) "\02\00\00\00\01\00\00\00\01\00\00\00\02\00\00\000") (data (i32.const 128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002") - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start:resolve-function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) @@ -344,7 +345,7 @@ ) (func $start:resolve-function-expression (; 12 ;) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 2 call $start:resolve-function-expression~anonymous|0 i32.const 42 @@ -358,7 +359,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 call $start:resolve-function-expression~anonymous|1 i32.const 42 @@ -376,7 +377,7 @@ i32.const 160 global.set $~lib/rt/stub/offset i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 call $start:resolve-function-expression~anonymous|2 call $~lib/util/number/itoa32 diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 73c29e7e1f..41900575be 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -15,11 +15,12 @@ (data (i32.const 576) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\004\002\00") (table $0 4 funcref) (elem (i32.const 1) $start:resolve-function-expression~anonymous|0 $start:resolve-function-expression~anonymous|1 $start:resolve-function-expression~anonymous|2) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 596)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $start:resolve-function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) @@ -641,7 +642,7 @@ (func $start:resolve-function-expression (; 16 ;) (local $0 i32) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 2 i32.const 1 call_indirect (type $i32_=>_i32) @@ -657,7 +658,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 i32.const 2 call_indirect (type $i32_=>_i32) @@ -683,7 +684,7 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 i32.const 3 call_indirect (type $i32_=>_i32) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index ecce2a5d2c..493eb2a697 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -43,8 +43,9 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 1680)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -2914,7 +2915,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 call $start:resolve-ternary~anonymous|0 i32.const 2 @@ -2928,7 +2929,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 call $resolve-ternary/g1 i32.const 4 @@ -2942,7 +2943,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 call $start:resolve-ternary~anonymous|1 i32.const 3 diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 6b601e1ac3..4a5a41ceb6 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -57,9 +57,10 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $resolve-ternary/f1 i32 (i32.const 1)) (global $resolve-ternary/f2 i32 (i32.const 2)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 2128)) (global $~lib/heap/__heap_base i32 (i32.const 2180)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -5309,7 +5310,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 global.get $resolve-ternary/b if (result i32) @@ -5330,7 +5331,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 global.get $resolve-ternary/b if (result i32) @@ -5351,7 +5352,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 global.get $resolve-ternary/b if (result i32) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index 455f4bb8fa..cce73ce0ba 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -15,8 +15,9 @@ (global $retain-release/REF (mut i32) (i32.const 0)) (global $retain-release/glo (mut i32) (i32.const 0)) (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) @@ -227,26 +228,26 @@ ) (func $retain-release/provideRefIndirect (; 14 ;) (param $0 i32) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-release/REF local.get $0 call_indirect (type $i32_=>_none) ) (func $retain-release/receiveRefIndirect (; 15 ;) (param $0 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) drop ) (func $start (; 16 ;) (local $0 i32) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end i32.const 112 global.set $~lib/rt/stub/startOffset diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index bab147d45b..226040bc6b 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -15,9 +15,10 @@ (global $retain-release/REF (mut i32) (i32.const 0)) (global $retain-release/glo (mut i32) (i32.const 0)) (global $retain-release/TARGET (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 100)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) @@ -776,7 +777,7 @@ ) (func $retain-release/provideRefIndirect (; 42 ;) (param $0 i32) i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-release/REF local.get $0 call_indirect (type $i32_=>_none) @@ -784,7 +785,7 @@ (func $retain-release/receiveRefIndirect (; 43 ;) (param $0 i32) (local $1 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) local.tee $1 @@ -795,18 +796,18 @@ ) (func $retain-release/receiveRefIndirectDrop (; 44 ;) (param $0 i32) i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call_indirect (type $none_=>_i32) call $~lib/rt/stub/__release ) (func $start (; 45 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:retain-release ) diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index 45da07e4b5..d5578e8edc 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -21,8 +21,9 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $retain-return/ref (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) @@ -1755,41 +1756,41 @@ call $retain-return/Ref#constructor global.set $retain-return/ref i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength call $retain-return/Ref#constructor call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/ref local.tee $0 if @@ -1800,12 +1801,12 @@ global.set $retain-return/ref ) (func $start (; 28 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:retain-return ) diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 650352a9fc..5f09b16748 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -27,15 +27,16 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $retain-return/ref (mut i32) (i32.const 0)) (global $retain-return/returnNewFnExpr (mut i32) (i32.const 1)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $retain-return/returnLocalFnExpr (mut i32) (i32.const 2)) (global $retain-return/returnGlobalFnExpr (mut i32) (i32.const 3)) (global $retain-return/returnNewFnBlock (mut i32) (i32.const 4)) (global $retain-return/returnLocalFnBlock (mut i32) (i32.const 5)) (global $retain-return/returnGlobalFnBlock (mut i32) (i32.const 6)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 288)) (global $~lib/heap/__heap_base i32 (i32.const 324)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) @@ -3366,64 +3367,64 @@ call $retain-return/returnGlobal call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnNewFnExpr call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnNewFnExpr call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/ref global.get $retain-return/returnLocalFnExpr call_indirect (type $i32_=>_i32) call $~lib/rt/pure/__release i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/ref global.get $retain-return/returnLocalFnExpr call_indirect (type $i32_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnGlobalFnExpr call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnGlobalFnExpr call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnNewFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnNewFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnLocalFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnLocalFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnGlobalFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength global.get $retain-return/returnGlobalFnBlock call_indirect (type $none_=>_i32) call $~lib/rt/pure/__release @@ -3443,12 +3444,12 @@ global.set $retain-return/ref ) (func $start (; 38 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:retain-return ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index 6f1c0cc5b3..aee357cf6c 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -17,7 +17,7 @@ (global $rt/instanceof/nullableAnimal (mut i32) (i32.const 0)) (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) @@ -426,12 +426,12 @@ end ) (func $start (; 8 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:rt/instanceof ) diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index fa3d4eeb68..39aab0e75c 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -20,7 +20,7 @@ (global $rt/instanceof/nullAnimal (mut i32) (i32.const 0)) (global $rt/instanceof/nullCat (mut i32) (i32.const 0)) (global $rt/instanceof/nullBlackcat (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 64)) (global $~lib/heap/__heap_base i32 (i32.const 116)) (export "_start" (func $start)) @@ -680,12 +680,12 @@ end ) (func $start (; 9 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:rt/instanceof ) diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index baa675412d..d65ee5bd5d 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -15,7 +15,7 @@ (global $rt/stub-realloc/ptr (mut i32) (i32.const 0)) (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 128)) (export "_start" (func $start)) (export "memory" (memory $0)) @@ -583,12 +583,12 @@ end ) (func $start (; 10 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end i32.const 160 global.set $~lib/rt/stub/startOffset diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index f790964553..bca90acb45 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -17,7 +17,7 @@ (global $rt/stub-realloc/originalPtr (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 128)) (global $~lib/heap/__heap_base i32 (i32.const 156)) (export "_start" (func $start)) @@ -1715,12 +1715,12 @@ end ) (func $start (; 11 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end global.get $~lib/heap/__heap_base i32.const 15 diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index 139908105b..e0cab2f4f3 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -229,7 +229,7 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $std/array/arr (mut i32) (i32.const 0)) (global $std/array/i (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (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)) @@ -241,7 +241,8 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -3840,7 +3841,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -3916,7 +3917,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -3993,7 +3994,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -4070,7 +4071,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -4236,7 +4237,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 i32.const 2 i32.shl @@ -4323,7 +4324,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 i32.const 2 i32.shl @@ -4409,7 +4410,7 @@ i32.load local.set $3 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $2 local.get $0 @@ -4487,7 +4488,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $0 i32.load offset=4 @@ -4555,7 +4556,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $0 i32.load offset=4 @@ -4711,7 +4712,7 @@ f32.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -4832,7 +4833,7 @@ f32.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -4948,7 +4949,7 @@ f32.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5039,7 +5040,7 @@ f32.load local.set $4 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5202,7 +5203,7 @@ f64.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5323,7 +5324,7 @@ f64.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5439,7 +5440,7 @@ f64.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5530,7 +5531,7 @@ f64.load local.set $4 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -5714,7 +5715,7 @@ i32.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $6 local.get $2 @@ -5836,7 +5837,7 @@ i32.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $2 @@ -5953,7 +5954,7 @@ i32.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $2 @@ -6044,7 +6045,7 @@ i32.load local.set $4 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $4 local.get $1 @@ -6208,7 +6209,7 @@ i32.lt_s if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -6399,7 +6400,7 @@ i32.load local.set $4 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $4 local.get $1 @@ -6441,7 +6442,7 @@ i32.lt_s if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -6565,7 +6566,7 @@ i32.lt_s if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $1 i32.const 1 @@ -15154,7 +15155,7 @@ call $~lib/rt/pure/__retain local.set $2 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 call $~lib/array/Array#sort call $~lib/rt/pure/__release @@ -15184,7 +15185,7 @@ call $~lib/rt/pure/__retain local.set $3 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 call $~lib/array/Array#sort call $~lib/rt/pure/__release @@ -15214,7 +15215,7 @@ call $~lib/rt/pure/__retain local.set $5 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 i32.const 46 call $~lib/array/Array#sort @@ -15246,7 +15247,7 @@ call $~lib/rt/pure/__retain local.set $7 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $7 i32.const 47 call $~lib/array/Array#sort @@ -15530,7 +15531,7 @@ call $~lib/rt/pure/__retain local.set $3 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 call $std/array/assertSorted<~lib/string/String | null> local.get $2 @@ -15548,7 +15549,7 @@ call $std/array/createRandomStringArray local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 56 call $std/array/assertSorted<~lib/array/Array> @@ -16240,12 +16241,12 @@ call $~lib/rt/pure/__release ) (func $start (; 203 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/array ) diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index c803359178..7ab3355162 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -230,7 +230,7 @@ (global $std/array/arr (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/array/i (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/math/random_seeded (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)) @@ -246,9 +246,10 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/builtins/u32.MAX_VALUE i32 (i32.const -1)) (global $~lib/builtins/i64.MAX_VALUE i64 (i64.const 9223372036854775807)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 8896)) (global $~lib/heap/__heap_base i32 (i32.const 9108)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -6198,7 +6199,7 @@ local.get $4 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -6334,7 +6335,7 @@ local.get $4 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -6458,7 +6459,7 @@ local.get $4 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -6579,7 +6580,7 @@ local.get $4 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $2 @@ -6803,7 +6804,7 @@ local.get $6 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $5 @@ -6926,7 +6927,7 @@ local.get $6 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load offset=4 local.get $5 @@ -7045,7 +7046,7 @@ i32.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $3 local.get $0 @@ -7166,7 +7167,7 @@ local.get $6 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $0 i32.load offset=4 @@ -7249,7 +7250,7 @@ local.get $6 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $0 i32.load offset=4 @@ -7368,7 +7369,7 @@ local.get $5 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $0 i32.load offset=4 @@ -7441,7 +7442,7 @@ local.get $5 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $0 i32.load offset=4 @@ -7688,7 +7689,7 @@ f32.load local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -7824,7 +7825,7 @@ f32.load local.set $10 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $9 local.get $10 local.get $2 @@ -7955,7 +7956,7 @@ f32.load local.set $9 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $10 local.get $9 local.get $2 @@ -8056,7 +8057,7 @@ f32.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -8137,7 +8138,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -8311,7 +8312,7 @@ f64.load local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -8447,7 +8448,7 @@ f64.load local.set $10 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $9 local.get $10 local.get $2 @@ -8578,7 +8579,7 @@ f64.load local.set $9 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $10 local.get $9 local.get $2 @@ -8679,7 +8680,7 @@ f64.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -8760,7 +8761,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -8969,7 +8970,7 @@ i32.load local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -9105,7 +9106,7 @@ i32.load local.set $10 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $9 local.get $10 local.get $2 @@ -9236,7 +9237,7 @@ i32.load local.set $11 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $10 local.get $11 local.get $2 @@ -9335,7 +9336,7 @@ i32.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -9388,7 +9389,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -9451,7 +9452,7 @@ i32.load local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -9587,7 +9588,7 @@ i32.load local.set $10 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $9 local.get $10 local.get $2 @@ -9718,7 +9719,7 @@ i32.load local.set $11 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $10 local.get $11 local.get $2 @@ -9817,7 +9818,7 @@ i32.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -9874,7 +9875,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -10042,7 +10043,7 @@ local.get $4 if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -10346,7 +10347,7 @@ call $~lib/rt/pure/__retain local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -10431,7 +10432,7 @@ call $~lib/rt/pure/__retain local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -10544,7 +10545,7 @@ local.get $4 if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -10829,7 +10830,7 @@ call $~lib/rt/pure/__retain local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -10914,7 +10915,7 @@ call $~lib/rt/pure/__retain local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -11027,7 +11028,7 @@ local.get $4 if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -11142,7 +11143,7 @@ call $~lib/rt/pure/__retain local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -11227,7 +11228,7 @@ call $~lib/rt/pure/__retain local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -11328,7 +11329,7 @@ local.get $4 if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -11639,7 +11640,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -12218,7 +12219,7 @@ call $~lib/rt/pure/__retain local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -12303,7 +12304,7 @@ call $~lib/rt/pure/__retain local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 local.get $1 @@ -12416,7 +12417,7 @@ local.get $4 if i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 local.get $2 i32.const 1 @@ -12595,7 +12596,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -23538,7 +23539,7 @@ call $~lib/rt/pure/__retain local.set $55 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $55 i32.const 0 call $~lib/array/Array#sort|trampoline @@ -23570,7 +23571,7 @@ call $~lib/rt/pure/__retain local.set $58 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $58 i32.const 0 call $~lib/array/Array#sort|trampoline @@ -23602,7 +23603,7 @@ call $~lib/rt/pure/__retain local.set $54 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $54 i32.const 0 call $~lib/array/Array#sort|trampoline @@ -23634,7 +23635,7 @@ call $~lib/rt/pure/__retain local.set $52 i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $52 i32.const 0 call $~lib/array/Array#sort|trampoline @@ -23922,7 +23923,7 @@ call $~lib/rt/pure/__retain local.set $38 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $35 i32.const 0 call $std/array/assertSorted<~lib/string/String | null>|trampoline @@ -23943,7 +23944,7 @@ call $std/array/createRandomStringArray local.set $39 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $39 i32.const 0 call $std/array/assertSorted<~lib/string/String>|trampoline @@ -24629,12 +24630,12 @@ call $~lib/rt/pure/__release ) (func $start (; 316 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/array ) diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index c5f9424c75..31046b19cb 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -30,7 +30,8 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) @@ -2408,7 +2409,7 @@ call $~lib/arraybuffer/ArrayBufferView#constructor local.set $5 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.load local.tee $3 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index ff42a2a40f..788404fb61 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -34,9 +34,10 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 544)) (global $~lib/heap/__heap_base i32 (i32.const 676)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) @@ -4184,7 +4185,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -4582,7 +4583,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $2 i32.load diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 2133140c07..13422a8ea5 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -37,7 +37,8 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) @@ -2549,7 +2550,7 @@ block $2of2 block $1of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $1of2 $1of2 $2of2 $outOfRange @@ -4088,7 +4089,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 i32.load call $~lib/dataview/DataView#constructor|trampoline diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index f77385f538..9a2136a3a0 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -41,9 +41,10 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 560)) (global $~lib/heap/__heap_base i32 (i32.const 604)) + (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (start $start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) @@ -4578,7 +4579,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -6291,7 +6292,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $0 i32.load diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index 59d19bf1ef..f6d6c7cdc4 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -500,7 +500,7 @@ (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/util/string/__fixmulShift (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) (global $~lib/util/number/_frc_minus (mut i64) (i64.const 0)) @@ -508,7 +508,8 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) @@ -2399,7 +2400,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -8641,7 +8642,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 call $~lib/string/String.fromCharCode|trampoline local.tee $10 @@ -8657,7 +8658,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 54 call $~lib/string/String.fromCharCode|trampoline local.tee $11 @@ -8673,7 +8674,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 65590 call $~lib/string/String.fromCharCode|trampoline local.tee $12 @@ -16676,12 +16677,12 @@ call $~lib/rt/pure/__retain ) (func $start (; 96 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/string ) diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 1c2602b605..b68c64f6ef 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -485,7 +485,7 @@ (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/string/String.MAX_LENGTH i32 (i32.const 536870904)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $~lib/number/I32.MAX_VALUE i32 (i32.const 2147483647)) @@ -517,9 +517,10 @@ (global $~lib/util/casemap/exceptions i32 (i32.const 23456)) (global $~lib/util/string/lowerTable127 i32 (i32.const 23632)) (global $~lib/util/string/lowerTable127Ptr (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 28416)) (global $~lib/heap/__heap_base i32 (i32.const 28508)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) @@ -4062,7 +4063,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -12616,7 +12617,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 i32.const 0 call $~lib/string/String.fromCharCode|trampoline @@ -12633,7 +12634,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 54 i32.const 0 call $~lib/string/String.fromCharCode|trampoline @@ -12650,7 +12651,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength i32.const 65590 i32.const 0 call $~lib/string/String.fromCharCode|trampoline @@ -21001,12 +21002,12 @@ call $~lib/rt/pure/__retain ) (func $start (; 108 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/string ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 800d1e8e97..11c8176809 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -11,7 +11,7 @@ (data (i32.const 224) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00o\00u\00r\00_\00i\00n\00t") (data (i32.const 256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $start:std/trace (; 1 ;) @@ -81,12 +81,12 @@ call $~lib/builtins/trace ) (func $start (; 2 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/trace ) diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index c8f09e6946..c4a257f689 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -12,7 +12,7 @@ (data (i32.const 256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t\00") (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") (table $0 1 funcref) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $start:std/trace (; 1 ;) @@ -82,12 +82,12 @@ call $~lib/builtins/trace ) (func $start (; 2 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/trace ) diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index f5042cb73b..94d5fbf001 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -203,7 +203,7 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_plus (mut i64) (i64.const 0)) @@ -212,7 +212,8 @@ (global $~lib/util/number/_K (mut i32) (i32.const 0)) (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -3077,7 +3078,7 @@ f64.load local.set $5 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -3198,7 +3199,7 @@ f64.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -3314,7 +3315,7 @@ f64.load local.set $6 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $6 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -3404,7 +3405,7 @@ f64.load local.set $4 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 call $~lib/util/sort/COMPARATOR~anonymous|0 @@ -4171,7 +4172,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 local.get $3 @@ -4262,7 +4263,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $2 local.get $4 @@ -4395,7 +4396,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -4492,7 +4493,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -4565,7 +4566,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 local.get $2 @@ -4725,7 +4726,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 local.get $2 @@ -4885,7 +4886,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -4961,7 +4962,7 @@ i32.lt_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -5033,7 +5034,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 local.get $3 @@ -5105,7 +5106,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $2 local.get $4 @@ -5215,7 +5216,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -5289,7 +5290,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -5363,7 +5364,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 local.get $2 @@ -5471,7 +5472,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $4 local.get $2 @@ -5579,7 +5580,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -5651,7 +5652,7 @@ i32.ge_s if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $1 @@ -5736,7 +5737,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 local.get $4 i32.add @@ -5858,7 +5859,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 local.get $4 i32.add @@ -5999,7 +6000,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 local.get $4 i32.add @@ -6127,7 +6128,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 1 @@ -6283,7 +6284,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 1 @@ -6439,7 +6440,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 2 @@ -6572,7 +6573,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 2 @@ -6733,7 +6734,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 3 @@ -6889,7 +6890,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 3 @@ -7050,7 +7051,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 2 @@ -7211,7 +7212,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $2 i32.const 3 @@ -7508,7 +7509,7 @@ i32.load8_s local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -7682,7 +7683,7 @@ i32.load8_u local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -7849,7 +7850,7 @@ i32.load8_u local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8029,7 +8030,7 @@ i32.load16_s local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8213,7 +8214,7 @@ i32.load16_u local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8395,7 +8396,7 @@ i32.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8577,7 +8578,7 @@ i32.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8759,7 +8760,7 @@ i64.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -8941,7 +8942,7 @@ i64.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -9123,7 +9124,7 @@ f32.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -9305,7 +9306,7 @@ f64.load local.set $6 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $2 local.get $0 @@ -9468,7 +9469,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $2 local.get $3 @@ -9557,7 +9558,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $2 local.get $3 @@ -9691,7 +9692,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -9782,7 +9783,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -9872,7 +9873,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -10010,7 +10011,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -10148,7 +10149,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -10243,7 +10244,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 1 local.get $3 local.get $2 @@ -10333,7 +10334,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 i32.add @@ -10426,7 +10427,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 i32.add @@ -10559,7 +10560,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -10654,7 +10655,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -10742,7 +10743,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -10882,7 +10883,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -11022,7 +11023,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -11115,7 +11116,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 local.get $2 @@ -11218,7 +11219,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $2 local.get $3 @@ -11308,7 +11309,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $2 local.get $3 @@ -11446,7 +11447,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -11532,7 +11533,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -11624,7 +11625,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -11760,7 +11761,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -12049,7 +12050,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -12295,7 +12296,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength i32.const 0 local.get $3 local.get $2 @@ -12425,7 +12426,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $1 local.get $2 i32.add @@ -12513,7 +12514,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $3 i32.add @@ -12693,7 +12694,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 i32.const 1 @@ -12783,7 +12784,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 i32.const 1 @@ -12908,7 +12909,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $2 i32.const 2 @@ -13075,7 +13076,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $2 i32.const 3 @@ -13248,7 +13249,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 i32.const 2 @@ -13371,7 +13372,7 @@ i32.lt_s if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $2 local.get $1 i32.const 3 @@ -16142,7 +16143,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -16318,7 +16319,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16331,7 +16332,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16346,7 +16347,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16361,7 +16362,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16736,7 +16737,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16749,7 +16750,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16764,7 +16765,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -16779,7 +16780,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -17153,7 +17154,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -17166,7 +17167,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -17181,7 +17182,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -17196,7 +17197,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int8Array#lastIndexOf|trampoline @@ -17540,7 +17541,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -17716,7 +17717,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -17729,7 +17730,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -17744,7 +17745,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -17759,7 +17760,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -18133,7 +18134,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -18146,7 +18147,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -18161,7 +18162,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -18176,7 +18177,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int16Array#lastIndexOf|trampoline @@ -18516,7 +18517,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -18688,7 +18689,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -18701,7 +18702,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -18716,7 +18717,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -18731,7 +18732,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -19104,7 +19105,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -19117,7 +19118,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 11 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -19132,7 +19133,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const -1 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -19147,7 +19148,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 3 call $~lib/typedarray/Int32Array#lastIndexOf|trampoline @@ -19487,7 +19488,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -19660,7 +19661,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 0 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -19673,7 +19674,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 11 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -19688,7 +19689,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const -1 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -19703,7 +19704,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 3 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -20076,7 +20077,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 0 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -20089,7 +20090,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 11 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -20104,7 +20105,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const -1 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -20119,7 +20120,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i64.const 3 call $~lib/typedarray/Int64Array#lastIndexOf|trampoline @@ -20459,7 +20460,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -20632,7 +20633,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f32.const 0 call $~lib/typedarray/Float32Array#lastIndexOf|trampoline @@ -20645,7 +20646,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f32.const 11 call $~lib/typedarray/Float32Array#lastIndexOf|trampoline @@ -20660,7 +20661,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f32.const -1 call $~lib/typedarray/Float32Array#lastIndexOf|trampoline @@ -20675,7 +20676,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f32.const 3 call $~lib/typedarray/Float32Array#lastIndexOf|trampoline @@ -21015,7 +21016,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -21188,7 +21189,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f64.const 0 call $~lib/typedarray/Float64Array#lastIndexOf|trampoline @@ -21201,7 +21202,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f64.const 11 call $~lib/typedarray/Float64Array#lastIndexOf|trampoline @@ -21216,7 +21217,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f64.const -1 call $~lib/typedarray/Float64Array#lastIndexOf|trampoline @@ -21231,7 +21232,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 f64.const 3 call $~lib/typedarray/Float64Array#lastIndexOf|trampoline @@ -25491,7 +25492,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Int8Array.wrap local.set $4 @@ -25632,7 +25633,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Uint8Array.wrap local.set $4 @@ -25773,7 +25774,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Uint8ClampedArray.wrap local.set $4 @@ -25916,7 +25917,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Int16Array.wrap local.set $4 @@ -26057,7 +26058,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Uint16Array.wrap local.set $4 @@ -26196,7 +26197,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Int32Array.wrap local.set $4 @@ -26335,7 +26336,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Uint32Array.wrap local.set $4 @@ -26475,7 +26476,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Int64Array.wrap local.set $4 @@ -26615,7 +26616,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Uint64Array.wrap local.set $4 @@ -26755,7 +26756,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Float32Array.wrap local.set $4 @@ -26895,7 +26896,7 @@ call $~lib/arraybuffer/ArrayBuffer#slice local.set $0 i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Float64Array.wrap local.set $4 @@ -32652,7 +32653,7 @@ unreachable end i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 call $~lib/typedarray/Float64Array#sort call $~lib/rt/pure/__release @@ -34442,12 +34443,12 @@ call $~lib/rt/pure/__release ) (func $start (; 521 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/typedarray ) diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 57c8cb8e7d..be0375534f 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -208,7 +208,7 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/argc (mut i32) (i32.const 0)) + (global $~argumentsLength (mut i32) (i32.const 0)) (global $~lib/builtins/i32.MAX_VALUE i32 (i32.const 2147483647)) (global $std/typedarray/forEachCallCount (mut i32) (i32.const 0)) (global $std/typedarray/forEachSelf (mut i32) (i32.const 0)) @@ -227,9 +227,10 @@ (global $std/typedarray/setSource2 (mut i32) (i32.const 4016)) (global $std/typedarray/setSource3 (mut i32) (i32.const 4096)) (global $std/typedarray/setSource7 (mut i32) (i32.const 4160)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 7984)) (global $~lib/heap/__heap_base i32 (i32.const 8180)) + (export "__argumentsLength" (global $~argumentsLength)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) @@ -4941,7 +4942,7 @@ f64.load local.set $8 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $8 local.get $2 @@ -5077,7 +5078,7 @@ f64.load local.set $10 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $9 local.get $10 local.get $2 @@ -5208,7 +5209,7 @@ f64.load local.set $9 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $10 local.get $9 local.get $2 @@ -5316,7 +5317,7 @@ f64.load local.set $7 i32.const 2 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 local.get $7 local.get $2 @@ -5396,7 +5397,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength br_table $0of1 $1of1 $outOfRange end unreachable @@ -6364,7 +6365,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -6502,7 +6503,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -6618,7 +6619,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -6758,7 +6759,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -6900,7 +6901,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7016,7 +7017,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7154,7 +7155,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7293,7 +7294,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7432,7 +7433,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7571,7 +7572,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7686,7 +7687,7 @@ local.get $9 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7799,7 +7800,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -7916,7 +7917,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8031,7 +8032,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8146,7 +8147,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8263,7 +8264,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8378,7 +8379,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8491,7 +8492,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8605,7 +8606,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8719,7 +8720,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8833,7 +8834,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -8947,7 +8948,7 @@ local.get $8 if i32.const 4 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 local.get $6 local.get $7 @@ -9078,7 +9079,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 0 @@ -9250,7 +9251,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 0 @@ -9441,7 +9442,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 0 @@ -9613,7 +9614,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 1 @@ -9808,7 +9809,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 1 @@ -10003,7 +10004,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 2 @@ -10175,7 +10176,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 2 @@ -10370,7 +10371,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 3 @@ -10565,7 +10566,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 3 @@ -10760,7 +10761,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 2 @@ -10955,7 +10956,7 @@ i32.shl i32.add i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $5 local.get $9 i32.const 3 @@ -11312,7 +11313,7 @@ i32.load8_s local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -11540,7 +11541,7 @@ i32.load8_u local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -11768,7 +11769,7 @@ i32.load8_u local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -11998,7 +11999,7 @@ i32.load16_s local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -12226,7 +12227,7 @@ i32.load16_u local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -12452,7 +12453,7 @@ i32.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -12678,7 +12679,7 @@ i32.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -12904,7 +12905,7 @@ i64.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -13130,7 +13131,7 @@ i64.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -13356,7 +13357,7 @@ f32.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -13582,7 +13583,7 @@ f64.load local.set $11 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $11 local.get $9 local.get $3 @@ -13790,7 +13791,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -13944,7 +13945,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -14096,7 +14097,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -14250,7 +14251,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -14404,7 +14405,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -14554,7 +14555,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -14702,7 +14703,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -14850,7 +14851,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -14998,7 +14999,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -15146,7 +15147,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -15294,7 +15295,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -15446,7 +15447,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -15601,7 +15602,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -15754,7 +15755,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -15909,7 +15910,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -16064,7 +16065,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -16215,7 +16216,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -16364,7 +16365,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -16513,7 +16514,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -16662,7 +16663,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -16811,7 +16812,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -16960,7 +16961,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -17116,7 +17117,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -17275,7 +17276,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -17432,7 +17433,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -17591,7 +17592,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -17750,7 +17751,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -17905,7 +17906,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -18058,7 +18059,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -18211,7 +18212,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -18364,7 +18365,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -18765,7 +18766,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -19172,7 +19173,7 @@ if block $for-continue|0 i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -19367,7 +19368,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -19535,7 +19536,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -19697,7 +19698,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 0 @@ -19863,7 +19864,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -20031,7 +20032,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 1 @@ -20189,7 +20190,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -20341,7 +20342,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -20494,7 +20495,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -20650,7 +20651,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -20806,7 +20807,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 2 @@ -20962,7 +20963,7 @@ local.get $7 if i32.const 3 - global.set $~lib/argc + global.set $~argumentsLength local.get $4 local.get $5 i32.const 3 @@ -24754,7 +24755,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -24952,7 +24953,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -24969,7 +24970,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -24986,7 +24987,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -25003,7 +25004,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -25439,7 +25440,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -25635,7 +25636,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -25652,7 +25653,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -25669,7 +25670,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -25686,7 +25687,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -26122,7 +26123,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -26318,7 +26319,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -26335,7 +26336,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -26352,7 +26353,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -26369,7 +26370,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -26809,7 +26810,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -27007,7 +27008,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -27024,7 +27025,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -27041,7 +27042,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -27058,7 +27059,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -27494,7 +27495,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -27690,7 +27691,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -27707,7 +27708,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -27724,7 +27725,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -27741,7 +27742,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -28173,7 +28174,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -28367,7 +28368,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -28384,7 +28385,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -28401,7 +28402,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -28418,7 +28419,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -28850,7 +28851,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -29044,7 +29045,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 0 i32.const 0 @@ -29061,7 +29062,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 11 i32.const 0 @@ -29078,7 +29079,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const -1 i32.const 0 @@ -29095,7 +29096,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i32.const 3 i32.const 0 @@ -29527,7 +29528,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -29722,7 +29723,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 0 i32.const 0 @@ -29739,7 +29740,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 11 i32.const 0 @@ -29756,7 +29757,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const -1 i32.const 0 @@ -29773,7 +29774,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 3 i32.const 0 @@ -30205,7 +30206,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -30400,7 +30401,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 0 i32.const 0 @@ -30417,7 +30418,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 11 i32.const 0 @@ -30434,7 +30435,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const -1 i32.const 0 @@ -30451,7 +30452,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 i64.const 3 i32.const 0 @@ -30883,7 +30884,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -31078,7 +31079,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f32.const 0 i32.const 0 @@ -31095,7 +31096,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f32.const 11 i32.const 0 @@ -31112,7 +31113,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f32.const -1 i32.const 0 @@ -31129,7 +31130,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f32.const 3 i32.const 0 @@ -31561,7 +31562,7 @@ block $1of1 block $0of1 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of1 $1of1 $outOfRange @@ -31756,7 +31757,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f64.const 0 i32.const 0 @@ -31773,7 +31774,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f64.const 11 i32.const 0 @@ -31790,7 +31791,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f64.const -1 i32.const 0 @@ -31807,7 +31808,7 @@ unreachable end i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $3 f64.const 3 i32.const 0 @@ -37936,7 +37937,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -38017,7 +38018,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -38194,7 +38195,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -38275,7 +38276,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -38452,7 +38453,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -38535,7 +38536,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -38712,7 +38713,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -38799,7 +38800,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -38976,7 +38977,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -39063,7 +39064,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -39240,7 +39241,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -39327,7 +39328,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -39504,7 +39505,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -39593,7 +39594,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -39770,7 +39771,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -39862,7 +39863,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -40039,7 +40040,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -40133,7 +40134,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -40310,7 +40311,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -40406,7 +40407,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -40583,7 +40584,7 @@ block $1of2 block $0of2 block $outOfRange - global.get $~lib/argc + global.get $~argumentsLength i32.const 1 i32.sub br_table $0of2 $1of2 $2of2 $outOfRange @@ -40681,7 +40682,7 @@ i32.const 1 drop i32.const 1 - global.set $~lib/argc + global.set $~argumentsLength local.get $6 i32.const 0 i32.const 0 @@ -52393,7 +52394,7 @@ unreachable end i32.const 0 - global.set $~lib/argc + global.set $~argumentsLength local.get $0 i32.const 0 call $~lib/typedarray/Float64Array#sort|trampoline @@ -54305,12 +54306,12 @@ call $~lib/rt/pure/__release ) (func $start (; 706 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:std/typedarray ) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 0bf632c035..4e98d73325 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -19,7 +19,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (export "_start" (func $start)) (export "memory" (memory $0)) (func $~lib/string/String#get:length (; 1 ;) (param $0 i32) (result i32) @@ -492,12 +492,12 @@ end ) (func $start (; 7 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:typeof ) diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index a332baa892..7fbf280eb6 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -29,7 +29,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) - (global $~lib/started (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 292)) (export "_start" (func $start)) (export "memory" (memory $0)) @@ -660,12 +660,12 @@ end ) (func $start (; 11 ;) - global.get $~lib/started + global.get $~started if return else i32.const 1 - global.set $~lib/started + global.set $~started end call $start:typeof ) From 77087055f8535f2be6bc0ac86e9298e2db5b8d13 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 9 Jan 2020 17:26:25 +0100 Subject: [PATCH 09/19] fix --- src/compiler.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index db0e54cfd8..622a54ea35 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -3093,7 +3093,7 @@ export class Compiler extends DiagnosticEmitter { return expr; } - private convertExpression( + convertExpression( expr: ExpressionRef, /** Original type. */ fromType: Type, @@ -8137,7 +8137,7 @@ export class Compiler extends DiagnosticEmitter { return instance; } - private compileInstantiate( + compileInstantiate( /** Class to instantiate. */ classInstance: Class, /** Constructor arguments. */ From 005dfbcf70e2ddeb297afd18754a30791c4fd7b9 Mon Sep 17 00:00:00 2001 From: dcode Date: Thu, 9 Jan 2020 17:57:42 +0100 Subject: [PATCH 10/19] fix --- src/builtins.ts | 6 +- src/compiler.ts | 11 +- tests/allocators/rt-full/optimized.wat | 1315 ++++---- tests/allocators/rt-full/untouched.wat | 4232 ++++++++++++------------ tests/allocators/rt-stub/optimized.wat | 311 +- tests/allocators/rt-stub/untouched.wat | 2286 +++++++------ 6 files changed, 4138 insertions(+), 4023 deletions(-) diff --git a/src/builtins.ts b/src/builtins.ts index f8e18d1ae7..4ff3bc0e80 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -2038,9 +2038,10 @@ export function compileCall( checkArgsRequired(operands, 3, reportNode, compiler) ) return module.unreachable(); if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) { + // use stdlib alternative if not supported let instance = compiler.resolver.resolveFunction(prototype, null); // reports compiler.currentType = Type.void; - if (!instance) return module.unreachable(); + if (!instance || !compiler.compileFunction(instance, true)) return module.unreachable(); return compiler.compileCallDirect(instance, operands, reportNode); } let usizeType = compiler.options.usizeType; @@ -2057,9 +2058,10 @@ export function compileCall( checkArgsRequired(operands, 3, reportNode, compiler) ) return module.unreachable(); if (!compiler.options.hasFeature(Feature.BULK_MEMORY)) { + // use stdlib alternative if not supported let instance = compiler.resolver.resolveFunction(prototype, null); // reports compiler.currentType = Type.void; - if (!instance) return module.unreachable(); + if (!instance || !compiler.compileFunction(instance, true)) return module.unreachable(); return compiler.compileCallDirect(instance, operands, reportNode); } let usizeType = compiler.options.usizeType; diff --git a/src/compiler.ts b/src/compiler.ts index 622a54ea35..6f7d4b9924 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1082,9 +1082,16 @@ export class Compiler extends DiagnosticEmitter { // === Functions ================================================================================ /** Compiles a priorly resolved function. */ - compileFunction(instance: Function): bool { + compileFunction( + /** Function to compile. */ + instance: Function, + /** Force compilation of stdlib alternative if a builtin. */ + forceStdAlternative: bool = false + ): bool { if (instance.is(CommonFlags.COMPILED)) return true; - assert(!(instance.is(CommonFlags.AMBIENT) && instance.hasDecorator(DecoratorFlags.BUILTIN))); + if (instance.hasDecorator(DecoratorFlags.BUILTIN)) { + if (!forceStdAlternative) return true; + } var previousType = this.currentType; // remember to retain it if compiling a function lazily instance.set(CommonFlags.COMPILED); diff --git a/tests/allocators/rt-full/optimized.wat b/tests/allocators/rt-full/optimized.wat index 0e383fb271..c305e1e6c5 100644 --- a/tests/allocators/rt-full/optimized.wat +++ b/tests/allocators/rt-full/optimized.wat @@ -1,26 +1,28 @@ (module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $none_=>_i32 (func (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") - (data (i32.const 64) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") - (data (i32.const 112) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") - (data (i32.const 168) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") - (data (i32.const 208) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data (i32.const 256) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (data (i32.const 304) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (data (i32.const 16) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 80) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 128) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 192) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 240) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data (i32.const 288) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data (i32.const 336) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 304)) + (global $~lib/rt/__rtti_base i32 (i32.const 336)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -33,7 +35,7 @@ (export "memory.repeat" (func $~lib/memory/memory.repeat)) (export "memory.compare" (func $~lib/memory/memory.compare)) (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -51,7 +53,7 @@ i32.shr_u local.set $4 i32.const 0 - else + else local.get $2 i32.const 31 local.get $2 @@ -86,42 +88,42 @@ local.get $5 i32.store offset=16 end + local.get $1 + local.get $0 + local.get $4 local.get $3 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=96 - local.get $1 i32.eq if + local.get $0 + local.get $4 local.get $3 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl - local.get $0 i32.add local.get $2 i32.store offset=96 local.get $2 i32.eqz if + local.get $0 local.get $3 i32.const 2 i32.shl - local.get $0 i32.add + local.get $0 local.get $3 i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=4 i32.const 1 @@ -149,7 +151,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -190,10 +192,10 @@ local.get $4 call $~lib/rt/tlsf/removeBlock local.get $1 + local.get $2 local.get $3 i32.const 3 i32.and - local.get $2 i32.or local.tee $3 i32.store @@ -237,10 +239,10 @@ local.get $2 call $~lib/rt/tlsf/removeBlock local.get $2 + local.get $7 local.get $6 i32.const 3 i32.and - local.get $7 i32.or local.tee $3 i32.store @@ -258,6 +260,7 @@ i32.sub local.get $1 i32.store + local.get $0 local.get $3 i32.const -4 i32.and @@ -270,7 +273,7 @@ i32.shr_u local.set $4 i32.const 0 - else + else local.get $2 i32.const 31 local.get $2 @@ -287,15 +290,13 @@ i32.const 7 i32.sub end - local.set $3 - local.get $3 + local.tee $3 i32.const 4 i32.shl local.get $4 i32.add i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=96 local.set $2 @@ -311,14 +312,14 @@ local.get $1 i32.store offset=16 end + local.get $0 + local.get $4 local.get $3 i32.const 4 i32.shl - local.get $4 i32.add i32.const 2 i32.shl - local.get $0 i32.add local.get $1 i32.store offset=96 @@ -330,15 +331,15 @@ i32.shl i32.or i32.store + local.get $0 local.get $3 i32.const 2 i32.shl - local.get $0 i32.add + local.get $0 local.get $3 i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=4 i32.const 1 @@ -347,31 +348,29 @@ i32.or i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/rt/tlsf/addMemory (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) local.get $2 - block (result i32) - local.get $0 - i32.load offset=1568 - local.tee $2 + local.get $0 + i32.load offset=1568 + local.tee $2 + if + local.get $2 + local.get $1 + i32.const 16 + i32.sub + i32.eq if + local.get $2 + i32.load + local.set $3 local.get $1 i32.const 16 i32.sub - local.get $2 - i32.eq - if - local.get $2 - i32.load - local.set $3 - local.get $1 - i32.const 16 - i32.sub - local.set $1 - end + local.set $1 end - local.get $1 end + local.get $1 i32.sub local.tee $2 i32.const 48 @@ -411,97 +410,104 @@ local.get $1 call $~lib/rt/tlsf/insertBlock ) - (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/maybeInitialize (; 4 ;) (result i32) (local $0 i32) (local $1 i32) - i32.const 1 - memory.size - local.tee $0 - i32.gt_s - if (result i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $2 + i32.eqz + if i32.const 1 - local.get $0 - i32.sub - memory.grow + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 368 + local.set $2 + i32.const 368 i32.const 0 - i32.lt_s - else + i32.store + i32.const 1936 i32.const 0 - end - if - unreachable - end - i32.const 336 - i32.const 0 - i32.store - i32.const 1904 - i32.const 0 - i32.store - i32.const 0 - local.set $0 - loop $repeat|0 - block $break|0 + i32.store + i32.const 0 + local.set $0 + loop $for-loop|0 local.get $0 i32.const 23 - i32.ge_u - br_if $break|0 - local.get $0 - i32.const 2 - i32.shl - i32.const 336 - i32.add - i32.const 0 - i32.store offset=4 - i32.const 0 - local.set $1 - loop $repeat|1 - block $break|1 + i32.lt_u + if + local.get $0 + i32.const 2 + i32.shl + i32.const 368 + 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.ge_u - br_if $break|1 - local.get $0 - i32.const 4 - i32.shl - local.get $1 - i32.add - i32.const 2 - i32.shl - i32.const 336 - i32.add - i32.const 0 - i32.store offset=96 - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $repeat|1 + i32.lt_u + if + local.get $1 + local.get $0 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.const 368 + 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 - local.get $0 - i32.const 1 - i32.add - local.set $0 - br $repeat|0 end + i32.const 368 + i32.const 1952 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 368 + global.set $~lib/rt/tlsf/ROOT end - i32.const 336 - i32.const 1920 - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - i32.const 336 - global.set $~lib/rt/tlsf/ROOT + local.get $2 ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (param $0 i32) (result i32) local.get $0 i32.const 1073741808 i32.ge_u if - i32.const 24 - i32.const 80 - i32.const 447 + i32.const 32 + i32.const 96 + i32.const 457 i32.const 29 call $~lib/builtins/abort unreachable @@ -518,8 +524,9 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + local.get $0 local.get $1 i32.const 256 i32.lt_u @@ -529,18 +536,18 @@ i32.shr_u local.set $1 i32.const 0 - else + else local.get $1 i32.const 536870904 i32.lt_u if + local.get $1 i32.const 1 i32.const 27 local.get $1 i32.clz i32.sub i32.shl - local.get $1 i32.add i32.const 1 i32.sub @@ -565,7 +572,6 @@ local.tee $2 i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=4 i32.const -1 @@ -574,6 +580,7 @@ i32.and local.tee $1 if (result i32) + local.get $0 local.get $1 i32.ctz local.get $2 @@ -582,10 +589,9 @@ i32.add i32.const 2 i32.shl - local.get $0 i32.add i32.load offset=96 - else + else local.get $0 i32.load i32.const -1 @@ -614,114 +620,375 @@ i32.shl i32.add i32.load offset=96 - else + else i32.const 0 end end ) - (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - memory.size - local.tee $2 - local.get $1 - i32.const 65535 - i32.add - i32.const -65536 - i32.and - i32.const 16 - i32.shr_u - local.tee $1 - local.get $2 - local.get $1 - i32.gt_s - select - memory.grow - i32.const 0 - i32.lt_s - if - local.get $1 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end - end + (func $~lib/rt/pure/markGray (; 7 ;) (param $0 i32) + (local $1 i32) local.get $0 - local.get $2 - i32.const 16 - i32.shl - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - ) - (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - local.get $1 - i32.load - local.tee $3 - i32.const -4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 i32.and - local.get $2 - i32.sub - local.tee $4 - i32.const 32 - i32.ge_u + i32.const 268435456 + i32.ne if + local.get $0 local.get $1 - local.get $3 - i32.const 2 + i32.const -1879048193 i32.and - local.get $2 - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.tee $1 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 + i32.const 268435456 i32.or - i32.store + i32.store offset=4 local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const -2 - i32.and - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - local.get $1 i32.const 16 i32.add - local.get $1 - i32.load - i32.const -4 - i32.and - i32.add - i32.load - i32.const -3 - i32.and - i32.store + i32.const 2 + call $~lib/rt/__visit_members end ) - (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) + (func $~lib/rt/tlsf/freeBlock (; 8 ;) (param $0 i32) (param $1 i32) + local.get $1 + local.get $1 + i32.load + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 10 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 11 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 12 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $for-loop|0 + local.get $3 + local.get $0 + i32.lt_u + if + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $5 + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 13 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + i32.const 16 + local.get $0 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + i32.ne + i32.shl + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $1 + local.get $1 + i32.const 536870904 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.tee $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) (local $3 i32) local.get $0 local.get $1 @@ -731,13 +998,25 @@ local.tee $2 i32.eqz if - local.get $0 - local.get $3 - call $~lib/rt/tlsf/growMemory + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock local.get $0 local.get $3 call $~lib/rt/tlsf/searchBlock - local.set $2 + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.set $2 + end end local.get $2 i32.const 0 @@ -754,16 +1033,8 @@ call $~lib/rt/tlsf/prepareBlock local.get $2 ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - global.get $~lib/rt/tlsf/ROOT - local.tee $2 - if (result i32) - local.get $2 - else - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - end + (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/tlsf/maybeInitialize local.get $0 call $~lib/rt/tlsf/allocateBlock local.tee $0 @@ -773,10 +1044,10 @@ i32.const 16 i32.add ) - (func $~lib/rt/pure/__retain (; 11 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/pure/__retain (; 17 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 - i32.const 332 + i32.const 364 i32.gt_u if local.get $0 @@ -791,25 +1062,14 @@ end local.get $0 ) - (func $~lib/rt/tlsf/freeBlock (; 12 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - local.get $1 - local.get $1 - i32.load - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $1 - call $~lib/rt/tlsf/insertBlock - ) - (func $~lib/rt/__typeinfo (; 13 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 18 ;) (param $0 i32) (result i32) local.get $0 - i32.const 304 + i32.const 336 i32.load i32.gt_u if - i32.const 128 - i32.const 184 + i32.const 144 + i32.const 208 i32.const 22 i32.const 27 call $~lib/builtins/abort @@ -818,11 +1078,11 @@ local.get $0 i32.const 3 i32.shl - i32.const 308 + i32.const 340 i32.add i32.load ) - (func $~lib/memory/memory.copy (; 14 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 19 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -844,7 +1104,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -870,10 +1130,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -894,11 +1154,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -919,10 +1179,10 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end - else + else local.get $1 i32.const 7 i32.and @@ -931,7 +1191,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -941,68 +1201,68 @@ local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u if - local.get $0 local.get $3 i32.const 8 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if - local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end end ) - (func $~lib/rt/tlsf/__free (; 15 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT + (func $~lib/rt/tlsf/__free (; 20 ;) (param $0 i32) + call $~lib/rt/tlsf/maybeInitialize local.get $0 i32.const 16 i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/growRoots (; 16 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 21 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -1043,7 +1303,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 22 ;) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.tee $1 @@ -1062,332 +1322,104 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 18 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 23 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 i32.load offset=4 local.tee $1 - i32.const 268435455 - i32.and - local.tee $2 - i32.const 1 - i32.eq - if - local.get $0 - i32.const 16 - i32.add - i32.const 1 - call $~lib/rt/__visit_members - local.get $1 - i32.const -2147483648 - i32.and - if - local.get $0 - i32.const -2147483648 - i32.store offset=4 - else - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - else - local.get $0 - i32.load offset=8 - call $~lib/rt/__typeinfo - i32.const 16 - i32.and - if - local.get $0 - local.get $2 - i32.const 1 - i32.sub - local.get $1 - i32.const -268435456 - i32.and - i32.or - i32.store offset=4 - else - local.get $0 - local.get $2 - i32.const 1 - i32.sub - i32.const -1342177280 - i32.or - i32.store offset=4 - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - if - local.get $0 - call $~lib/rt/pure/appendRoot - end - end - end - ) - (func $~lib/rt/pure/__release (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - i32.const 332 - i32.gt_u - if - local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const -1879048193 - i32.and - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 + i32.const 268435455 i32.and - i32.const 536870912 + local.tee $2 + i32.const 1 i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end if - local.get $0 - local.get $1 - i32.const -1879048193 - i32.and - i32.store offset=4 local.get $0 i32.const 16 i32.add - i32.const 5 + i32.const 1 call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect (; 24 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.tee $5 - local.tee $2 - local.set $3 - global.get $~lib/rt/pure/CUR - local.set $0 - loop $repeat|0 - block $break|0 - local.get $3 - local.get $0 - i32.ge_u - br_if $break|0 - local.get $3 - i32.load - local.tee $4 - i32.load offset=4 - local.tee $1 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $2 - local.get $4 - i32.store - local.get $2 - i32.const 4 - i32.add - local.set $2 - else - i32.const 0 - local.get $1 - i32.const 268435455 - i32.and - i32.eqz - local.get $1 - i32.const 1879048192 - i32.and - select - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $1 - i32.const 2147483647 - i32.and - i32.store offset=4 - end - end - local.get $3 - i32.const 4 - i32.add - local.set $3 - br $repeat|0 - end - end - local.get $2 - global.set $~lib/rt/pure/CUR - local.get $5 - local.set $0 - loop $repeat|1 - block $break|1 - local.get $0 - local.get $2 - i32.ge_u - br_if $break|1 + local.get $1 + i32.const -2147483648 + i32.and + if local.get $0 - i32.load - call $~lib/rt/pure/scan + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|1 + call $~lib/rt/tlsf/freeBlock end - end - local.get $5 - local.set $0 - loop $repeat|2 - block $break|2 + else + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if local.get $0 local.get $2 - i32.ge_u - br_if $break|2 - local.get $0 - i32.load - local.tee $1 + i32.const 1 + i32.sub local.get $1 - i32.load offset=4 - i32.const 2147483647 + i32.const -268435456 i32.and + i32.or i32.store offset=4 - local.get $1 - call $~lib/rt/pure/collectWhite + else local.get $0 - i32.const 4 - i32.add - local.set $0 - br $repeat|2 + local.get $2 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end end end - local.get $5 - global.set $~lib/rt/pure/CUR ) - (func $~lib/memory/memory.init (; 25 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 224 - i32.const 272 + (func $~lib/rt/pure/__release (; 24 ;) (param $0 i32) + local.get $0 + i32.const 364 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $~lib/memory/memory.init (; 25 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + i32.const 256 + i32.const 304 i32.const 35 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 26 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 224 - i32.const 272 + (func $~lib/memory/memory.drop (; 26 ;) (param $0 i32) + i32.const 256 + i32.const 304 i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.repeat (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $2 local.get $3 i32.mul local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $3 i32.lt_u @@ -1402,33 +1434,115 @@ local.get $4 i32.add local.set $4 - br $continue|0 + br $while-continue|0 end end ) - (func $~lib/memory/memory.compare (; 28 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - i32.eq - if (result i32) + (func $~lib/memory/memory.compare (; 28 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memcmp|inlined.0 (result i32) i32.const 0 - else - loop $continue|0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memcmp|inlined.0 + drop + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + i32.const 0 + local.get $2 + i32.eqz + br_if $~lib/util/memory/memcmp|inlined.0 + drop + local.get $0 + i32.load8_u + local.tee $3 + local.get $1 + i32.load8_u + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.sub + local.set $2 + br $while-continue|1 + end + end + end + end + loop $while-continue|2 local.get $2 - if (result i32) + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load8_u + local.tee $3 local.get $1 i32.load8_u - i32.eq - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end local.get $0 i32.const 1 i32.add @@ -1437,24 +1551,15 @@ i32.const 1 i32.add local.set $1 - br $continue|0 + br $while-continue|2 end end - local.get $2 - if (result i32) - local.get $0 - i32.load8_u - local.get $1 - i32.load8_u - i32.sub - else - i32.const 0 - end + i32.const 0 end ) - (func $~lib/rt/pure/__visit (; 29 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 29 ;) (param $0 i32) (param $1 i32) local.get $0 - i32.const 332 + i32.const 364 i32.lt_u if return @@ -1474,15 +1579,8 @@ if local.get $1 i32.const 2 - i32.eq - br_if $case1|0 - block $tablify|0 - local.get $1 - i32.const 3 - i32.sub - br_table $case2|0 $case3|0 $case4|0 $tablify|0 - end - br $break|0 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $case4|0 $break|0 end local.get $0 call $~lib/rt/pure/decrement @@ -1522,7 +1620,7 @@ call $~lib/rt/pure/collectWhite end ) - (func $~lib/rt/__visit_members (; 30 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 30 ;) (param $0 i32) (param $1 i32) block $switch$1$default block $switch$1$case$4 block $switch$1$case$2 @@ -1546,7 +1644,4 @@ end unreachable ) - (func $null (; 31 ;) (type $FUNCSIG$v) - nop - ) ) diff --git a/tests/allocators/rt-full/untouched.wat b/tests/allocators/rt-full/untouched.wat index addfbf47c6..a047a92387 100644 --- a/tests/allocators/rt-full/untouched.wat +++ b/tests/allocators/rt-full/untouched.wat @@ -1,31 +1,33 @@ (module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$vii (func (param i32 i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$vi (func (param i32))) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") - (data (i32.const 56) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") - (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") - (data (i32.const 160) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") - (data (i32.const 216) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") - (data (i32.const 256) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") - (data (i32.const 304) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (data (i32.const 352) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 64) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 128) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 176) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 240) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 288) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") + (data (i32.const 336) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") + (data (i32.const 384) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) - (elem (i32.const 0) $null) (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) - (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 352)) - (global $~lib/heap/__heap_base i32 (i32.const 380)) + (global $~lib/rt/__rtti_base i32 (i32.const 384)) + (global $~lib/heap/__heap_base i32 (i32.const 412)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/tlsf/__alloc)) (export "__retain" (func $~lib/rt/pure/__retain)) @@ -38,7 +40,7 @@ (export "memory.repeat" (func $~lib/memory/memory.repeat)) (export "memory.compare" (func $~lib/memory/memory.compare)) (export "__free" (func $~lib/rt/tlsf/__free)) - (func $~lib/rt/tlsf/removeBlock (; 1 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -52,14 +54,16 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and i32.eqz if i32.const 0 - i32.const 24 - i32.const 276 + i32.const 32 + i32.const 277 i32.const 13 call $~lib/builtins/abort unreachable @@ -70,6 +74,8 @@ i32.xor i32.and local.set $3 + i32.const 1 + drop local.get $3 i32.const 16 i32.ge_u @@ -77,14 +83,14 @@ local.get $3 i32.const 1073741808 i32.lt_u - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 278 + i32.const 32 + i32.const 279 i32.const 13 call $~lib/builtins/abort unreachable @@ -99,7 +105,7 @@ i32.const 4 i32.shr_u local.set $5 - else + else i32.const 31 local.get $3 i32.clz @@ -122,6 +128,8 @@ i32.sub local.set $4 end + i32.const 1 + drop local.get $4 i32.const 23 i32.lt_u @@ -129,14 +137,14 @@ local.get $5 i32.const 16 i32.lt_u - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 291 + i32.const 32 + i32.const 292 i32.const 13 call $~lib/builtins/abort unreachable @@ -160,85 +168,77 @@ i32.store offset=16 end local.get $1 - block $~lib/rt/tlsf/GETHEAD|inlined.0 (result i32) + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if local.get $0 - local.set $10 + local.set $11 local.get $4 - local.set $9 + local.set $10 local.get $5 + local.set $9 + local.get $7 local.set $8 + local.get $11 local.get $10 - local.get $9 i32.const 4 i32.shl - local.get $8 + local.get $9 i32.add i32.const 2 i32.shl i32.add - i32.load offset=96 - end - i32.eq - if - block $~lib/rt/tlsf/SETHEAD|inlined.1 + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz + if local.get $0 - local.set $11 - local.get $4 - local.set $10 - local.get $5 local.set $9 - local.get $7 + local.get $4 local.set $8 - local.get $11 - local.get $10 - i32.const 4 - i32.shl local.get $9 - i32.add + local.get $8 i32.const 2 i32.shl i32.add - local.get $8 - i32.store offset=96 - end - local.get $7 - i32.eqz - if - block $~lib/rt/tlsf/GETSL|inlined.0 (result i32) - local.get $0 - local.set $9 - local.get $4 - local.set $8 - local.get $9 - local.get $8 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + i32.load offset=4 local.set $9 - block $~lib/rt/tlsf/SETSL|inlined.1 - local.get $0 - local.set $8 - local.get $4 - local.set $11 - local.get $9 - i32.const 1 - local.get $5 - i32.shl - i32.const -1 - i32.xor - i32.and - local.tee $9 - local.set $10 - local.get $8 - local.get $11 - i32.const 2 - i32.shl - i32.add - local.get $10 - i32.store offset=4 - end + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 local.get $9 i32.eqz if @@ -256,7 +256,7 @@ end end ) - (func $~lib/rt/tlsf/insertBlock (; 2 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/insertBlock (; 2 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -269,12 +269,14 @@ (local $11 i32) (local $12 i32) (local $13 i32) + i32.const 1 + drop local.get $1 i32.eqz if i32.const 0 - i32.const 24 - i32.const 204 + i32.const 32 + i32.const 205 i32.const 13 call $~lib/builtins/abort unreachable @@ -282,32 +284,32 @@ local.get $1 i32.load local.set $2 + i32.const 1 + drop local.get $2 i32.const 1 i32.and i32.eqz if i32.const 0 - i32.const 24 - i32.const 206 + i32.const 32 + i32.const 207 i32.const 13 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETRIGHT|inlined.0 (result i32) - local.get $1 - local.set $3 - local.get $3 - i32.const 16 - i32.add - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -345,20 +347,18 @@ i32.or local.tee $2 i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.1 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 16 - i32.add - local.get $6 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add - end + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add local.set $4 local.get $4 i32.load @@ -369,26 +369,26 @@ i32.const 2 i32.and if - block $~lib/rt/tlsf/GETFREELEFT|inlined.0 (result i32) - local.get $1 - local.set $6 - local.get $6 - i32.const 4 - i32.sub - i32.load - end + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load local.set $6 local.get $6 i32.load local.set $3 + i32.const 1 + drop local.get $3 i32.const 1 i32.and i32.eqz if i32.const 0 - i32.const 24 - i32.const 227 + i32.const 32 + i32.const 228 i32.const 15 call $~lib/builtins/abort unreachable @@ -437,6 +437,8 @@ i32.xor i32.and local.set $8 + i32.const 1 + drop local.get $8 i32.const 16 i32.ge_u @@ -444,18 +446,20 @@ local.get $8 i32.const 1073741808 i32.lt_u - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 242 + i32.const 32 + i32.const 243 i32.const 13 call $~lib/builtins/abort unreachable end + i32.const 1 + drop local.get $1 i32.const 16 i32.add @@ -466,8 +470,8 @@ i32.eqz if i32.const 0 - i32.const 24 - i32.const 243 + i32.const 32 + i32.const 244 i32.const 13 call $~lib/builtins/abort unreachable @@ -487,7 +491,7 @@ i32.const 4 i32.shr_u local.set $10 - else + else i32.const 31 local.get $8 i32.clz @@ -510,6 +514,8 @@ i32.sub local.set $9 end + i32.const 1 + drop local.get $9 i32.const 23 i32.lt_u @@ -517,36 +523,34 @@ local.get $10 i32.const 16 i32.lt_u - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 259 + i32.const 32 + i32.const 260 i32.const 13 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.1 (result i32) - local.get $0 - local.set $7 - local.get $9 - local.set $3 - local.get $10 - local.set $6 - local.get $7 - local.get $3 - i32.const 4 - i32.shl - local.get $6 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $11 local.get $1 i32.const 0 @@ -560,27 +564,25 @@ local.get $1 i32.store offset=16 end - block $~lib/rt/tlsf/SETHEAD|inlined.2 - local.get $0 - local.set $12 - local.get $9 - local.set $7 - local.get $10 - local.set $3 - local.get $1 - local.set $6 - local.get $12 - local.get $7 - i32.const 4 - i32.shl - local.get $3 - i32.add - i32.const 2 - i32.shl - i32.add - local.get $6 - i32.store offset=96 - end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 local.get $0 local.get $0 i32.load @@ -589,38 +591,34 @@ i32.shl i32.or i32.store - block $~lib/rt/tlsf/SETSL|inlined.2 - local.get $0 - local.set $13 - local.get $9 - local.set $12 - block $~lib/rt/tlsf/GETSL|inlined.1 (result i32) - local.get $0 - local.set $3 - local.get $9 - local.set $6 - local.get $3 - local.get $6 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end - i32.const 1 - local.get $10 - i32.shl - i32.or - local.set $7 - local.get $13 - local.get $12 - i32.const 2 - i32.shl - i32.add - local.get $7 - i32.store offset=4 - end + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 ) - (func $~lib/rt/tlsf/addMemory (; 3 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/rt/tlsf/addMemory (; 3 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) @@ -628,6 +626,8 @@ (local $7 i32) (local $8 i32) (local $9 i32) + i32.const 1 + drop local.get $1 local.get $2 i32.le_u @@ -636,7 +636,7 @@ i32.const 15 i32.and i32.eqz - else + else i32.const 0 end if (result i32) @@ -644,29 +644,29 @@ i32.const 15 i32.and i32.eqz - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 385 + i32.const 32 + i32.const 386 i32.const 4 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETTAIL|inlined.0 (result i32) - local.get $0 - local.set $3 - local.get $3 - i32.load offset=1568 - end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 local.set $4 i32.const 0 local.set $5 local.get $4 if + i32.const 1 + drop local.get $1 local.get $4 i32.const 16 @@ -675,8 +675,8 @@ i32.eqz if i32.const 0 - i32.const 24 - i32.const 395 + i32.const 32 + i32.const 396 i32.const 15 call $~lib/builtins/abort unreachable @@ -694,10 +694,12 @@ local.get $4 i32.load local.set $5 - else + else nop end - else + else + i32.const 1 + drop local.get $1 local.get $0 i32.const 1572 @@ -706,8 +708,8 @@ i32.eqz if i32.const 0 - i32.const 24 - i32.const 407 + i32.const 32 + i32.const 408 i32.const 4 call $~lib/builtins/abort unreachable @@ -725,9 +727,9 @@ return end local.get $6 - i32.const 2 i32.const 16 - i32.mul + i32.const 1 + i32.shl i32.sub local.set $7 local.get $1 @@ -758,21 +760,19 @@ i32.const 2 i32.or i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.1 - local.get $0 - local.set $9 - local.get $4 - local.set $3 - local.get $9 - local.get $3 - i32.store offset=1568 - end + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 local.get $0 local.get $8 call $~lib/rt/tlsf/insertBlock i32.const 1 ) - (func $~lib/rt/tlsf/initializeRoot (; 4 ;) (type $FUNCSIG$v) + (func $~lib/rt/tlsf/maybeInitialize (; 4 ;) (result i32) (local $0 i32) (local $1 i32) (local $2 i32) @@ -783,158 +783,155 @@ (local $7 i32) (local $8 i32) (local $9 i32) - global.get $~lib/heap/__heap_base - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and + (local $10 i32) + (local $11 i32) + global.get $~lib/rt/tlsf/ROOT local.set $0 - memory.size - local.set $1 local.get $0 - i32.const 1572 - i32.add - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor - i32.and - i32.const 16 - i32.shr_u - local.set $2 - local.get $2 - local.get $1 - i32.gt_s - if (result i32) + i32.eqz + if + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const -16 + i32.and + local.set $1 + memory.size + local.set $2 + local.get $1 + 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 $3 + local.get $3 local.get $2 + i32.gt_s + if (result i32) + local.get $3 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end local.get $1 - i32.sub - memory.grow - i32.const 0 - i32.lt_s - else + local.set $0 + local.get $0 i32.const 0 - end - if - unreachable - end - local.get $0 - local.set $3 - local.get $3 - i32.const 0 - i32.store - block $~lib/rt/tlsf/SETTAIL|inlined.0 - local.get $3 + i32.store + local.get $0 local.set $5 i32.const 0 local.set $4 local.get $5 local.get $4 i32.store offset=1568 - end - block $break|0 i32.const 0 local.set $5 - loop $repeat|0 + loop $for-loop|0 local.get $5 i32.const 23 i32.lt_u - i32.eqz - br_if $break|0 - block $~lib/rt/tlsf/SETSL|inlined.0 - local.get $3 - local.set $7 + local.set $4 + local.get $4 + if + local.get $0 + local.set $8 local.get $5 - local.set $6 + local.set $7 i32.const 0 - local.set $4 + local.set $6 + local.get $8 local.get $7 - local.get $6 i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=4 - end - block $break|1 i32.const 0 - local.set $7 - loop $repeat|1 - local.get $7 + local.set $8 + loop $for-loop|1 + local.get $8 i32.const 16 i32.lt_u - i32.eqz - br_if $break|1 - block $~lib/rt/tlsf/SETHEAD|inlined.0 - local.get $3 - local.set $9 + local.set $7 + local.get $7 + if + local.get $0 + local.set $11 local.get $5 - local.set $8 - local.get $7 - local.set $6 - i32.const 0 - local.set $4 - local.get $9 + local.set $10 local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 i32.const 4 i32.shl - local.get $6 + local.get $9 i32.add i32.const 2 i32.shl i32.add - local.get $4 + local.get $6 i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 end - local.get $7 - i32.const 1 - i32.add - local.set $7 - br $repeat|1 - unreachable end - unreachable + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 end - local.get $5 - i32.const 1 - i32.add - local.set $5 - br $repeat|0 - unreachable end - unreachable + local.get $0 + local.get $1 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $0 + global.set $~lib/rt/tlsf/ROOT end - local.get $3 local.get $0 - i32.const 1572 - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - memory.size - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop - local.get $3 - global.set $~lib/rt/tlsf/ROOT ) - (func $~lib/rt/tlsf/prepareSize (; 5 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/tlsf/prepareSize (; 5 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) local.get $0 i32.const 1073741808 i32.ge_u if - i32.const 72 - i32.const 24 - i32.const 447 + i32.const 80 + i32.const 32 + i32.const 457 i32.const 29 call $~lib/builtins/abort unreachable @@ -954,7 +951,7 @@ i32.gt_u select ) - (func $~lib/rt/tlsf/searchBlock (; 6 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/searchBlock (; 6 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) (local $4 i32) @@ -973,7 +970,7 @@ i32.const 4 i32.shr_u local.set $3 - else + else local.get $1 i32.const 536870904 i32.lt_u @@ -988,7 +985,7 @@ i32.add i32.const 1 i32.sub - else + else local.get $1 end local.set $4 @@ -1014,6 +1011,8 @@ i32.sub local.set $2 end + i32.const 1 + drop local.get $2 i32.const 23 i32.lt_u @@ -1021,30 +1020,28 @@ local.get $3 i32.const 16 i32.lt_u - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 337 + i32.const 32 + i32.const 338 i32.const 13 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETSL|inlined.2 (result i32) - local.get $0 - local.set $5 - local.get $2 - local.set $4 - local.get $5 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 i32.const 0 i32.const -1 i32.xor @@ -1073,56 +1070,33 @@ if i32.const 0 local.set $7 - else + else local.get $5 i32.ctz local.set $2 - block $~lib/rt/tlsf/GETSL|inlined.3 (result i32) - local.get $0 - local.set $8 - local.get $2 - local.set $4 - local.get $8 - local.get $4 - i32.const 2 - i32.shl - i32.add - i32.load offset=4 - end + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 local.set $6 + i32.const 1 + drop local.get $6 i32.eqz if i32.const 0 - i32.const 24 - i32.const 350 + i32.const 32 + i32.const 351 i32.const 17 call $~lib/builtins/abort unreachable end - block $~lib/rt/tlsf/GETHEAD|inlined.2 (result i32) - local.get $0 - local.set $9 - local.get $2 - local.set $8 - local.get $6 - i32.ctz - local.set $4 - local.get $9 - local.get $8 - i32.const 4 - i32.shl - local.get $4 - i32.add - i32.const 2 - i32.shl - i32.add - i32.load offset=96 - end - local.set $7 - end - else - block $~lib/rt/tlsf/GETHEAD|inlined.3 (result i32) local.get $0 local.set $9 local.get $2 @@ -1140,336 +1114,693 @@ i32.shl i32.add i32.load offset=96 + local.set $7 end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 local.set $7 end local.get $7 ) - (func $~lib/rt/tlsf/growMemory (; 7 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - (local $6 i32) - (local $7 i32) - memory.size - local.set $2 + (func $~lib/rt/pure/markGray (; 7 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 local.get $1 - i32.const 65535 - i32.add - i32.const 65535 - i32.const -1 - i32.xor + i32.const 1879048192 i32.and - i32.const 16 - i32.shr_u - local.set $3 - local.get $2 - local.tee $4 - local.get $3 - local.tee $5 - local.get $4 - local.get $5 - i32.gt_s - select - local.set $6 - local.get $6 - memory.grow - i32.const 0 - i32.lt_s + i32.const 268435456 + i32.ne if - local.get $3 - memory.grow - i32.const 0 - i32.lt_s - if - unreachable - end + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members end - memory.size - local.set $7 - local.get $0 - local.get $2 - i32.const 16 - i32.shl - local.get $7 - i32.const 16 - i32.shl - call $~lib/rt/tlsf/addMemory - drop ) - (func $~lib/rt/tlsf/prepareBlock (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) + (func $~lib/rt/tlsf/freeBlock (; 8 ;) (param $0 i32) (param $1 i32) + (local $2 i32) local.get $1 i32.load - local.set $3 + local.set $2 local.get $2 - i32.const 15 + i32.const 1 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 24 - i32.const 364 - i32.const 13 + i32.const 32 + i32.const 569 + i32.const 2 call $~lib/builtins/abort unreachable end - local.get $3 - i32.const 3 + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + i32.const 0 + drop + ) + (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 i32.const -1 i32.xor i32.and - local.get $2 - i32.sub - local.set $4 - local.get $4 - i32.const 32 - i32.ge_u + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 10 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq if local.get $1 - local.get $2 - local.get $3 - i32.const 2 - i32.and - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.get $2 - i32.add - local.set $5 - local.get $5 - local.get $4 - i32.const 16 - i32.sub - i32.const 1 - i32.or - i32.store - local.get $0 - local.get $5 - call $~lib/rt/tlsf/insertBlock - else - local.get $1 - local.get $3 - i32.const 1 - i32.const -1 - i32.xor + i32.const 268435455 i32.and - i32.store - block $~lib/rt/tlsf/GETRIGHT|inlined.3 (result i32) + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 local.get $1 - local.set $5 - local.get $5 - i32.const 16 - i32.add - local.get $5 - i32.load - i32.const 3 + i32.const 1879048192 i32.const -1 i32.xor i32.and - i32.add - end - block $~lib/rt/tlsf/GETRIGHT|inlined.2 (result i32) - local.get $1 - local.set $5 - local.get $5 + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 i32.const 16 i32.add - local.get $5 - i32.load i32.const 3 - i32.const -1 - i32.xor - i32.and - i32.add + call $~lib/rt/__visit_members end - i32.load - i32.const 2 - i32.const -1 - i32.xor - i32.and - i32.store end ) - (func $~lib/rt/tlsf/allocateBlock (; 9 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) - (local $2 i32) - (local $3 i32) - local.get $1 - call $~lib/rt/tlsf/prepareSize - local.set $2 + (func $~lib/rt/pure/collectWhite (; 11 ;) (param $0 i32) + (local $1 i32) local.get $0 - local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 - local.get $3 - i32.eqz + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end if local.get $0 - local.get $2 - call $~lib/rt/tlsf/growMemory + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 12 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 local.get $2 - call $~lib/rt/tlsf/searchBlock - local.set $3 local.get $3 - i32.eqz + i32.lt_u + local.set $4 + local.get $4 if - i32.const 0 - i32.const 24 - i32.const 477 - i32.const 15 - call $~lib/builtins/abort - unreachable + local.get $2 + i32.load + local.set $5 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $5 + call $~lib/rt/pure/markGray + local.get $1 + local.get $5 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $6 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/freeBlock + else + local.get $5 + local.get $6 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $for-loop|0 end end - local.get $3 - i32.load - i32.const 3 - i32.const -1 - i32.xor - i32.and - local.get $2 - i32.ge_u - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 479 - i32.const 13 - call $~lib/builtins/abort - unreachable - end - local.get $3 - i32.const 0 - i32.store offset=4 - local.get $3 local.get $1 - i32.store offset=12 + global.set $~lib/rt/pure/CUR local.get $0 - local.get $3 - call $~lib/rt/tlsf/removeBlock + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + call $~lib/rt/pure/scan + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|1 + end + end local.get $0 - local.get $3 - local.get $2 - call $~lib/rt/tlsf/prepareBlock - local.get $3 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|2 + end + end + local.get $0 + global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/tlsf/__alloc (; 10 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/tlsf/growMemory (; 13 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) - global.get $~lib/rt/tlsf/ROOT - local.set $2 - local.get $2 - i32.eqz + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.const 536870904 + i32.lt_u if - call $~lib/rt/tlsf/initializeRoot - global.get $~lib/rt/tlsf/ROOT - local.set $2 + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 end + memory.size + local.set $2 + local.get $1 + i32.const 16 local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub local.get $0 - call $~lib/rt/tlsf/allocateBlock local.set $3 local.get $3 - local.get $1 - i32.store offset=8 - local.get $3 - i32.const 16 + i32.load offset=1568 + i32.ne + i32.shl i32.add - ) - (func $~lib/rt/pure/increment (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 local.set $1 local.get $1 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $1 - i32.const 1 + i32.const 65535 i32.add - i32.const 268435455 + i32.const 65535 i32.const -1 i32.xor i32.and - i32.eq - i32.eqz + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s if + local.get $4 + memory.grow i32.const 0 - i32.const 128 - i32.const 104 - i32.const 2 - call $~lib/builtins/abort - unreachable + i32.lt_s + if + unreachable + end end + memory.size + local.set $7 local.get $0 - local.get $1 - i32.const 1 - i32.add - i32.store offset=4 - local.get $0 - i32.load + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 14 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 i32.const 1 + drop + local.get $2 + i32.const 15 i32.and i32.eqz i32.eqz if i32.const 0 - i32.const 128 - i32.const 107 + i32.const 32 + i32.const 365 i32.const 13 call $~lib/builtins/abort unreachable end - ) - (func $~lib/rt/pure/__retain (; 12 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) - local.get $0 - global.get $~lib/heap/__heap_base - i32.gt_u + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u if - local.get $0 + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 i32.const 16 i32.sub - call $~lib/rt/pure/increment + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store end - local.get $0 ) - (func $~lib/rt/tlsf/freeBlock (; 13 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) + (local $3 i32) + i32.const 1 + drop + global.get $~lib/rt/tlsf/collectLock + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end local.get $1 - i32.load + call $~lib/rt/tlsf/prepareSize local.set $2 + local.get $0 local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + global.get $~lib/gc/gc.auto + if + i32.const 1 + drop + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 1 + drop + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + else + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + i32.const 1 + drop + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 507 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + end + end i32.const 1 + drop + local.get $3 + i32.load + i32.const -4 i32.and - i32.eqz + local.get $2 + i32.ge_u i32.eqz if i32.const 0 - i32.const 24 - i32.const 531 - i32.const 2 + i32.const 32 + i32.const 510 + i32.const 13 call $~lib/builtins/abort unreachable end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + i32.const 0 + drop + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $2 + local.get $2 local.get $1 + i32.store offset=8 local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 17 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const -268435456 + i32.and + local.get $1 i32.const 1 - i32.or - i32.store + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end local.get $0 local.get $1 - call $~lib/rt/tlsf/insertBlock + i32.const 1 + i32.add + i32.store offset=4 + i32.const 0 + drop + i32.const 1 + drop + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 18 ;) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 ) - (func $~lib/rt/__typeinfo (; 14 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/__typeinfo (; 19 ;) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/__rtti_base local.set $1 @@ -1478,8 +1809,8 @@ i32.load i32.gt_u if - i32.const 176 - i32.const 232 + i32.const 192 + i32.const 256 i32.const 22 i32.const 27 call $~lib/builtins/abort @@ -1494,45 +1825,44 @@ i32.add i32.load ) - (func $~lib/util/memory/memcpy (; 15 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 20 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 - local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end end local.get $0 @@ -1541,54 +1871,54 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.sub + local.set $2 + br $while-continue|1 end end local.get $2 @@ -1654,22 +1984,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1701,338 +2027,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 local.get $2 - i32.const 19 + i32.const 17 i32.ge_u + local.set $5 + local.get $5 if local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -2040,15 +2106,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -2056,15 +2122,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -2072,10 +2138,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -2091,455 +2157,583 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|3 end end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end end br $break|2 - unreachable end - unreachable - end - end - local.get $2 - i32.const 16 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) + i32.load + local.set $3 local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end local.get $2 - i32.const 8 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2547,76 +2741,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2624,40 +2802,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -2665,31 +2835,28 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end ) - (func $~lib/memory/memory.copy (; 16 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 21 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -2703,6 +2870,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -2710,7 +2879,7 @@ i32.le_u if (result i32) i32.const 1 - else + else local.get $5 local.get $3 i32.add @@ -2736,101 +2905,93 @@ i32.and i32.eq if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 end end - end - block $break|2 - loop $continue|2 + loop $while-continue|1 local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 + local.get $5 + local.get $4 + i64.load + i64.store local.get $3 - i32.const 1 + i32.const 8 i32.sub local.set $3 - br $continue|2 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 end end end - else + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else local.get $4 i32.const 7 i32.and @@ -2839,61 +3000,20 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -2905,24 +3025,55 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 end end end - end - end - ) - (func $~lib/rt/tlsf/__free (; 17 ;) (type $FUNCSIG$vi) (param $0 i32) - global.get $~lib/rt/tlsf/ROOT - i32.eqz - if - i32.const 0 - i32.const 24 - i32.const 561 - i32.const 13 - call $~lib/builtins/abort - unreachable + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end end + ) + (func $~lib/rt/tlsf/__free (; 22 ;) (param $0 i32) local.get $0 i32.const 0 i32.ne @@ -2931,25 +3082,25 @@ i32.const 15 i32.and i32.eqz - else + else i32.const 0 end i32.eqz if i32.const 0 - i32.const 24 - i32.const 562 + i32.const 32 + i32.const 593 i32.const 2 call $~lib/builtins/abort unreachable end - global.get $~lib/rt/tlsf/ROOT + call $~lib/rt/tlsf/maybeInitialize local.get $0 i32.const 16 i32.sub call $~lib/rt/tlsf/freeBlock ) - (func $~lib/rt/pure/growRoots (; 18 ;) (type $FUNCSIG$v) + (func $~lib/rt/pure/growRoots (; 23 ;) (local $0 i32) (local $1 i32) (local $2 i32) @@ -2979,12 +3130,16 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 + i32.const 0 + drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if + i32.const 0 + drop local.get $0 call $~lib/rt/tlsf/__free end @@ -2999,7 +3154,7 @@ i32.add global.set $~lib/rt/pure/END ) - (func $~lib/rt/pure/appendRoot (; 19 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/appendRoot (; 24 ;) (param $0 i32) (local $1 i32) global.get $~lib/rt/pure/CUR local.set $1 @@ -3019,7 +3174,7 @@ i32.add global.set $~lib/rt/pure/CUR ) - (func $~lib/rt/pure/decrement (; 20 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/decrement (; 25 ;) (param $0 i32) (local $1 i32) (local $2 i32) local.get $0 @@ -3029,6 +3184,10 @@ i32.const 268435455 i32.and local.set $2 + i32.const 0 + drop + i32.const 1 + drop local.get $0 i32.load i32.const 1 @@ -3037,7 +3196,7 @@ i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 115 i32.const 13 call $~lib/builtins/abort @@ -3060,7 +3219,7 @@ global.get $~lib/rt/tlsf/ROOT local.get $0 call $~lib/rt/tlsf/freeBlock - else + else local.get $0 i32.const -2147483648 i32.const 0 @@ -3069,14 +3228,16 @@ i32.or i32.store offset=4 end - else + else + i32.const 1 + drop local.get $2 i32.const 0 i32.gt_u i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 124 i32.const 15 call $~lib/builtins/abort @@ -3106,7 +3267,7 @@ local.get $0 call $~lib/rt/pure/appendRoot end - else + else local.get $0 local.get $1 i32.const 268435455 @@ -3121,334 +3282,73 @@ end end ) - (func $~lib/rt/pure/__release (; 21 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/pure/__release (; 26 ;) (param $0 i32) local.get $0 global.get $~lib/heap/__heap_base i32.gt_u if local.get $0 - i32.const 16 - i32.sub - call $~lib/rt/pure/decrement - end - ) - (func $~lib/rt/pure/markGray (; 22 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.ne - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 268435456 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 2 - call $~lib/rt/__visit_members - end - ) - (func $~lib/rt/pure/scanBlack (; 23 ;) (type $FUNCSIG$vi) (param $0 i32) - local.get $0 - local.get $0 - i32.load offset=4 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 4 - call $~lib/rt/__visit_members - ) - (func $~lib/rt/pure/scan (; 24 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 268435456 - i32.eq - if - local.get $1 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - if - local.get $0 - call $~lib/rt/pure/scanBlack - else - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 536870912 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 3 - call $~lib/rt/__visit_members - end - end - ) - (func $~lib/rt/pure/collectWhite (; 25 ;) (type $FUNCSIG$vi) (param $0 i32) - (local $1 i32) - local.get $0 - i32.load offset=4 - local.set $1 - local.get $1 - i32.const 1879048192 - i32.and - i32.const 536870912 - i32.eq - if (result i32) - local.get $1 - i32.const -2147483648 - i32.and - i32.eqz - else - i32.const 0 - end - if - local.get $0 - local.get $1 - i32.const 1879048192 - i32.const -1 - i32.xor - i32.and - i32.const 0 - i32.or - i32.store offset=4 - local.get $0 - i32.const 16 - i32.add - i32.const 5 - call $~lib/rt/__visit_members - global.get $~lib/rt/tlsf/ROOT - local.get $0 - call $~lib/rt/tlsf/freeBlock - end - ) - (func $~lib/rt/pure/__collect (; 26 ;) (type $FUNCSIG$v) - (local $0 i32) - (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) - global.get $~lib/rt/pure/ROOTS - local.set $0 - local.get $0 - local.set $1 - block $break|0 - block - local.get $1 - local.set $2 - global.get $~lib/rt/pure/CUR - local.set $3 - end - loop $repeat|0 - local.get $2 - local.get $3 - i32.lt_u - i32.eqz - br_if $break|0 - local.get $2 - i32.load - local.set $4 - local.get $4 - i32.load offset=4 - local.set $5 - local.get $5 - i32.const 1879048192 - i32.and - i32.const 805306368 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - else - i32.const 0 - end - if - local.get $4 - call $~lib/rt/pure/markGray - local.get $1 - local.get $4 - i32.store - local.get $1 - i32.const 4 - i32.add - local.set $1 - else - local.get $5 - i32.const 1879048192 - i32.and - i32.const 0 - i32.eq - if (result i32) - local.get $5 - i32.const 268435455 - i32.and - i32.eqz - else - i32.const 0 - end - if - global.get $~lib/rt/tlsf/ROOT - local.get $4 - call $~lib/rt/tlsf/freeBlock - else - local.get $4 - local.get $5 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - end - end - local.get $2 - i32.const 4 - i32.add - local.set $2 - br $repeat|0 - unreachable - end - unreachable - end - local.get $1 - global.set $~lib/rt/pure/CUR - block $break|1 - local.get $0 - local.set $5 - loop $repeat|1 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|1 - local.get $5 - i32.load - call $~lib/rt/pure/scan - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|1 - unreachable - end - unreachable - end - block $break|2 - local.get $0 - local.set $5 - loop $repeat|2 - local.get $5 - local.get $1 - i32.lt_u - i32.eqz - br_if $break|2 - local.get $5 - i32.load - local.set $4 - local.get $4 - local.get $4 - i32.load offset=4 - i32.const -2147483648 - i32.const -1 - i32.xor - i32.and - i32.store offset=4 - local.get $4 - call $~lib/rt/pure/collectWhite - local.get $5 - i32.const 4 - i32.add - local.set $5 - br $repeat|2 - unreachable - end - unreachable + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement end - local.get $0 - global.set $~lib/rt/pure/CUR ) - (func $~lib/memory/memory.init (; 27 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 272 - i32.const 320 + (func $~lib/memory/memory.init (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + i32.const 304 + i32.const 352 i32.const 35 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 28 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 272 - i32.const 320 + (func $~lib/memory/memory.drop (; 28 ;) (param $0 i32) + i32.const 304 + i32.const 352 i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.repeat (; 29 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 0 local.set $4 local.get $2 local.get $3 i32.mul local.set $5 - block $break|0 - loop $continue|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 local.get $4 - local.get $5 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $4 - local.get $2 - i32.add - local.set $4 - br $continue|0 - end + i32.add + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $4 + local.get $2 + i32.add + local.set $4 + br $while-continue|0 end end ) - (func $~lib/memory/memory.compare (; 30 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.compare (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $~lib/util/memory/memcmp|inlined.0 (result i32) local.get $0 local.set $5 @@ -3463,21 +3363,44 @@ i32.const 0 br $~lib/util/memory/memcmp|inlined.0 end - block $break|0 - loop $continue|0 - local.get $3 - i32.const 0 - i32.ne - if (result i32) + i32.const 1 + drop + local.get $5 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + i32.const 0 + br $~lib/util/memory/memcmp|inlined.0 + end local.get $5 i32.load8_u + local.set $7 local.get $4 i32.load8_u - i32.eq - else - i32.const 0 - end - if + local.set $8 + local.get $7 + local.get $8 + i32.ne + if + local.get $7 + local.get $8 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end local.get $3 i32.const 1 i32.sub @@ -3490,23 +3413,82 @@ i32.const 1 i32.add local.set $4 - br $continue|0 + br $while-continue|0 + end + end + block $while-break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + i64.load + local.get $4 + i64.load + i64.ne + if + br $while-break|1 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + br $while-continue|1 + end end end end - local.get $3 - if (result i32) - local.get $5 - i32.load8_u - local.get $4 - i32.load8_u + loop $while-continue|2 + local.get $3 + local.tee $6 + i32.const 1 i32.sub - else - i32.const 0 + local.set $3 + local.get $6 + local.set $6 + local.get $6 + if + local.get $5 + i32.load8_u + local.set $9 + local.get $4 + i32.load8_u + local.set $10 + local.get $9 + local.get $10 + i32.ne + if + local.get $9 + local.get $10 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end + i32.const 0 end ) - (func $~lib/rt/pure/__visit (; 31 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/pure/__visit (; 31 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) local.get $0 @@ -3550,109 +3532,89 @@ br_if $case4|0 br $case5|0 end - block - local.get $2 - call $~lib/rt/pure/decrement - br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - i32.const 268435455 - i32.and - i32.const 0 - i32.gt_u - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 75 - i32.const 17 - call $~lib/builtins/abort - unreachable - end - local.get $2 - local.get $2 - i32.load offset=4 - i32.const 1 - i32.sub - i32.store offset=4 local.get $2 - call $~lib/rt/pure/markGray + call $~lib/rt/pure/decrement br $break|0 + end + i32.const 1 + drop + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/scan + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray br $break|0 - unreachable - end - unreachable - end - block - local.get $2 - i32.load offset=4 - local.set $3 - local.get $3 - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - local.get $3 - i32.const 1 - i32.add - i32.const 268435455 - i32.const -1 - i32.xor - i32.and - i32.eq - i32.eqz - if - i32.const 0 - i32.const 128 - i32.const 86 - i32.const 6 - call $~lib/builtins/abort - unreachable end local.get $2 - local.get $3 - i32.const 1 - i32.add - i32.store offset=4 - local.get $3 - i32.const 1879048192 - i32.and - i32.const 0 - i32.ne - if - local.get $2 - call $~lib/rt/pure/scanBlack - end + call $~lib/rt/pure/scan br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const -268435456 + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 144 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort unreachable end - unreachable - end - block local.get $2 - call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end br $break|0 - unreachable end - unreachable + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 end + i32.const 1 + drop i32.const 0 i32.eqz if i32.const 0 - i32.const 128 + i32.const 144 i32.const 97 i32.const 24 call $~lib/builtins/abort @@ -3660,63 +3622,29 @@ end end ) - (func $~lib/rt/__visit_members (; 32 ;) (type $FUNCSIG$vii) (param $0 i32) (param $1 i32) + (func $~lib/rt/__visit_members (; 32 ;) (param $0 i32) (param $1 i32) (local $2 i32) - block - end - block $switch$1$leave - block $switch$1$default - block $switch$1$case$4 - block $switch$1$case$2 - local.get $0 - i32.const 8 - i32.sub - i32.load - br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default - end - block - block - return - unreachable - end - unreachable - unreachable - end - unreachable - end - block - block - block - local.get $0 - i32.load - local.tee $2 - if - local.get $2 - local.get $1 - call $~lib/rt/pure/__visit - end - return - unreachable - end - unreachable - unreachable - end - unreachable - unreachable + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$default end - unreachable + return end - block - block - unreachable - unreachable - end - unreachable - unreachable + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit end - unreachable + return end - ) - (func $null (; 33 ;) (type $FUNCSIG$v) + unreachable ) ) diff --git a/tests/allocators/rt-stub/optimized.wat b/tests/allocators/rt-stub/optimized.wat index 4efc9e128f..2588d79311 100644 --- a/tests/allocators/rt-stub/optimized.wat +++ b/tests/allocators/rt-stub/optimized.wat @@ -1,19 +1,19 @@ (module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") - (data (i32.const 56) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") - (data (i32.const 104) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s") + (data (i32.const 112) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 104)) + (global $~lib/rt/__rtti_base i32 (i32.const 112)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -25,45 +25,23 @@ (export "memory.drop" (func $~lib/memory/memory.drop)) (export "memory.repeat" (func $~lib/memory/memory.repeat)) (export "memory.compare" (func $~lib/memory/memory.compare)) - (export "__free" (func $~lib/rt/stub/__release)) + (export "__free" (func $~lib/rt/stub/__free)) (export "__reset" (func $~lib/rt/stub/__reset)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) + (local $1 i32) (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.tee $3 - local.get $0 - i32.const 1 - local.get $0 - i32.const 1 - i32.gt_u - select - i32.add - i32.const 15 - i32.add - i32.const -16 - i32.and - local.tee $2 memory.size - local.tee $4 + local.tee $2 i32.const 16 i32.shl + local.tee $1 i32.gt_u if - local.get $4 local.get $2 - local.get $3 + local.get $0 + local.get $1 i32.sub i32.const 65535 i32.add @@ -71,16 +49,16 @@ i32.and i32.const 16 i32.shr_u - local.tee $5 - local.get $4 - local.get $5 + local.tee $1 + local.get $2 + local.get $1 i32.gt_s select memory.grow i32.const 0 i32.lt_s if - local.get $5 + local.get $1 memory.grow i32.const 0 i32.lt_s @@ -89,12 +67,47 @@ end end end - local.get $2 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.tee $3 + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $2 + i32.const 16 + local.get $2 + i32.const 16 + i32.gt_u + select + local.tee $4 + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $3 i32.const 16 i32.sub local.tee $2 + local.get $4 + i32.store + local.get $2 + i32.const 1 + i32.store offset=4 + local.get $2 local.get $1 i32.store offset=8 local.get $2 @@ -102,32 +115,32 @@ i32.store offset=12 local.get $3 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) nop ) - (func $~lib/rt/stub/__collect (; 4 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__collect (; 5 ;) nop ) - (func $~lib/memory/memory.init (; 5 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 24 - i32.const 72 + (func $~lib/memory/memory.init (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + i32.const 32 + i32.const 80 i32.const 35 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 24 - i32.const 72 + (func $~lib/memory/memory.drop (; 7 ;) (param $0 i32) + i32.const 32 + i32.const 80 i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.copy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) block $~lib/util/memory/memmove|inlined.0 @@ -149,7 +162,7 @@ i32.and i32.eq if - loop $continue|0 + loop $while-continue|0 local.get $0 i32.const 7 i32.and @@ -175,10 +188,10 @@ local.get $4 i32.load8_u i32.store8 - br $continue|0 + br $while-continue|0 end end - loop $continue|1 + loop $while-continue|1 local.get $3 i32.const 8 i32.ge_u @@ -199,11 +212,11 @@ i32.const 8 i32.add local.set $1 - br $continue|1 + br $while-continue|1 end end end - loop $continue|2 + loop $while-continue|2 local.get $3 if local.get $0 @@ -224,10 +237,10 @@ i32.const 1 i32.sub local.set $3 - br $continue|2 + br $while-continue|2 end end - else + else local.get $1 i32.const 7 i32.and @@ -236,7 +249,7 @@ i32.and i32.eq if - loop $continue|3 + loop $while-continue|3 local.get $0 local.get $3 i32.add @@ -246,67 +259,67 @@ local.get $3 i32.eqz br_if $~lib/util/memory/memmove|inlined.0 - local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|3 + br $while-continue|3 end end - loop $continue|4 + loop $while-continue|4 local.get $3 i32.const 8 i32.ge_u if - local.get $0 local.get $3 i32.const 8 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i64.load i64.store - br $continue|4 + br $while-continue|4 end end end - loop $continue|5 + loop $while-continue|5 local.get $3 if - local.get $0 local.get $3 i32.const 1 i32.sub local.tee $3 + local.get $0 i32.add local.get $1 local.get $3 i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|5 end end end end ) - (func $~lib/memory/memory.repeat (; 8 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 9 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) local.get $2 local.get $3 i32.mul local.set $3 - loop $continue|0 + loop $while-continue|0 local.get $4 local.get $3 i32.lt_u @@ -321,33 +334,115 @@ local.get $4 i32.add local.set $4 - br $continue|0 + br $while-continue|0 end end ) - (func $~lib/memory/memory.compare (; 9 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - local.get $0 - local.get $1 - i32.eq - if (result i32) + (func $~lib/memory/memory.compare (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memcmp|inlined.0 (result i32) i32.const 0 - else - loop $continue|0 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memcmp|inlined.0 + drop + local.get $0 + i32.const 7 + i32.and + local.get $1 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + i32.const 0 + local.get $2 + i32.eqz + br_if $~lib/util/memory/memcmp|inlined.0 + drop + local.get $0 + i32.load8_u + local.tee $3 + local.get $1 + i32.load8_u + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end + local.get $2 + i32.const 1 + i32.sub + local.set $2 + local.get $0 + i32.const 1 + i32.add + local.set $0 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $2 + i32.const 8 + i32.ge_u + if + local.get $0 + i64.load + local.get $1 + i64.load + i64.eq + if + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + local.get $2 + i32.const 8 + i32.sub + local.set $2 + br $while-continue|1 + end + end + end + end + loop $while-continue|2 local.get $2 - if (result i32) + local.tee $3 + i32.const 1 + i32.sub + local.set $2 + local.get $3 + if local.get $0 i32.load8_u + local.tee $3 local.get $1 i32.load8_u - i32.eq - else - i32.const 0 - end - if - local.get $2 - i32.const 1 - i32.sub - local.set $2 + local.tee $4 + i32.ne + if + local.get $3 + local.get $4 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end local.get $0 i32.const 1 i32.add @@ -356,29 +451,35 @@ i32.const 1 i32.add local.set $1 - br $continue|0 + br $while-continue|2 end end - local.get $2 - if (result i32) - local.get $0 - i32.load8_u - local.get $1 - i32.load8_u - i32.sub - else - i32.const 0 - end + i32.const 0 + end + ) + (func $~lib/rt/stub/__free (; 11 ;) (param $0 i32) + global.get $~lib/rt/stub/offset + local.get $0 + local.get $0 + i32.const 16 + i32.sub + local.tee $0 + i32.load + i32.add + i32.eq + if + local.get $0 + global.set $~lib/rt/stub/offset end ) - (func $~lib/rt/stub/__reset (; 10 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__reset (; 12 ;) global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $start (; 11 ;) (type $FUNCSIG$v) + (func $start (; 13 ;) i32.const 144 global.set $~lib/rt/stub/startOffset - global.get $~lib/rt/stub/startOffset + i32.const 144 global.set $~lib/rt/stub/offset ) ) diff --git a/tests/allocators/rt-stub/untouched.wat b/tests/allocators/rt-stub/untouched.wat index 97f25aaef7..565e61ab34 100644 --- a/tests/allocators/rt-stub/untouched.wat +++ b/tests/allocators/rt-stub/untouched.wat @@ -1,23 +1,23 @@ (module - (type $FUNCSIG$iii (func (param i32 i32) (result i32))) - (type $FUNCSIG$ii (func (param i32) (result i32))) - (type $FUNCSIG$vi (func (param i32))) - (type $FUNCSIG$v (func)) - (type $FUNCSIG$viiii (func (param i32 i32 i32 i32))) - (type $FUNCSIG$viii (func (param i32 i32 i32))) - (type $FUNCSIG$iiii (func (param i32 i32 i32) (result i32))) + (type $i32_=>_none (func (param i32))) + (type $none_=>_none (func)) + (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) (memory $0 1) - (data (i32.const 8) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") - (data (i32.const 56) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") - (data (i32.const 104) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") + (data (i32.const 16) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00N\00o\00t\00 \00i\00m\00p\00l\00e\00m\00e\00n\00t\00e\00d\00") + (data (i32.const 64) "\1c\00\00\00\01\00\00\00\01\00\00\00\1c\00\00\00~\00l\00i\00b\00/\00m\00e\00m\00o\00r\00y\00.\00t\00s\00") + (data (i32.const 112) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00s\00t\00u\00b\00.\00t\00s\00") + (data (i32.const 160) "\03\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) - (elem (i32.const 0) $null) (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) - (global $~lib/rt/__rtti_base i32 (i32.const 104)) - (global $~lib/heap/__heap_base i32 (i32.const 132)) + (global $~lib/rt/__rtti_base i32 (i32.const 160)) + (global $~lib/heap/__heap_base i32 (i32.const 188)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -32,50 +32,23 @@ (export "__free" (func $~lib/rt/stub/__free)) (export "__reset" (func $~lib/rt/stub/__reset)) (start $start) - (func $~lib/rt/stub/__alloc (; 1 ;) (type $FUNCSIG$iii) (param $0 i32) (param $1 i32) (result i32) + (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) + (local $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - (local $6 i32) - (local $7 i32) - (local $8 i32) - local.get $0 - i32.const 1073741808 - i32.gt_u - if - unreachable - end - global.get $~lib/rt/stub/offset - i32.const 16 - i32.add - local.set $2 - local.get $2 - local.get $0 - local.tee $3 - i32.const 1 - local.tee $4 - local.get $3 - local.get $4 - i32.gt_u - select - i32.add - i32.const 15 - i32.add - i32.const 15 - i32.const -1 - i32.xor - i32.and - local.set $5 memory.size - local.set $6 - local.get $5 - local.get $6 + local.set $1 + local.get $1 i32.const 16 i32.shl + local.set $2 + local.get $0 + local.get $2 i32.gt_u if - local.get $5 + local.get $0 local.get $2 i32.sub i32.const 65535 @@ -87,12 +60,12 @@ i32.const 16 i32.shr_u local.set $3 - local.get $6 + local.get $1 local.tee $4 local.get $3 - local.tee $7 + local.tee $5 local.get $4 - local.get $7 + local.get $5 i32.gt_s select local.set $4 @@ -110,84 +83,127 @@ end end end - local.get $5 + local.get $0 global.set $~lib/rt/stub/offset + ) + (func $~lib/rt/stub/__alloc (; 2 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + local.get $0 + i32.const 1073741808 + i32.gt_u + if + unreachable + end + global.get $~lib/rt/stub/offset + i32.const 16 + i32.add + local.set $2 + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $3 + i32.const 16 + local.tee $4 + local.get $3 + local.get $4 + i32.gt_u + select + local.set $5 + local.get $2 + local.get $5 + i32.add + call $~lib/rt/stub/maybeGrowMemory local.get $2 i32.const 16 i32.sub - local.set $8 - local.get $8 + local.set $6 + local.get $6 + local.get $5 + i32.store + i32.const 1 + drop + local.get $6 + i32.const 1 + i32.store offset=4 + local.get $6 local.get $1 i32.store offset=8 - local.get $8 + local.get $6 local.get $0 i32.store offset=12 local.get $2 ) - (func $~lib/rt/stub/__retain (; 2 ;) (type $FUNCSIG$ii) (param $0 i32) (result i32) + (func $~lib/rt/stub/__retain (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $~lib/rt/stub/__release (; 3 ;) (type $FUNCSIG$vi) (param $0 i32) + (func $~lib/rt/stub/__release (; 4 ;) (param $0 i32) nop ) - (func $~lib/rt/stub/__collect (; 4 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__collect (; 5 ;) nop ) - (func $~lib/memory/memory.init (; 5 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) - i32.const 24 - i32.const 72 + (func $~lib/memory/memory.init (; 6 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + i32.const 32 + i32.const 80 i32.const 35 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/memory/memory.drop (; 6 ;) (type $FUNCSIG$vi) (param $0 i32) - i32.const 24 - i32.const 72 + (func $~lib/memory/memory.drop (; 7 ;) (param $0 i32) + i32.const 32 + i32.const 80 i32.const 42 i32.const 4 call $~lib/builtins/abort unreachable ) - (func $~lib/util/memory/memcpy (; 7 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/util/memory/memcpy (; 8 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - block $break|0 - loop $continue|0 + (local $6 i32) + i32.const 0 + drop + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 local.get $2 - if (result i32) - local.get $1 - i32.const 3 - i32.and - else - i32.const 0 - end - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - br $continue|0 - end + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 end end local.get $0 @@ -196,54 +212,54 @@ i32.const 0 i32.eq if - block $break|1 - loop $continue|1 + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 local.get $2 i32.const 16 - i32.ge_u - if - local.get $0 - local.get $1 - i32.load - i32.store - local.get $0 - i32.const 4 - i32.add - local.get $1 - i32.const 4 - i32.add - i32.load - i32.store - local.get $0 - i32.const 8 - i32.add - local.get $1 - i32.const 8 - i32.add - i32.load - i32.store - local.get $0 - i32.const 12 - i32.add - local.get $1 - i32.const 12 - i32.add - i32.load - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|1 - end + i32.sub + local.set $2 + br $while-continue|1 end end local.get $2 @@ -309,22 +325,18 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -356,338 +368,78 @@ br_if $case2|2 br $break|2 end - block - local.get $1 - i32.load - local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 3 - i32.sub - local.set $2 - block $break|3 - loop $continue|3 - local.get $2 - i32.const 17 - i32.ge_u - if - local.get $1 - i32.const 1 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 5 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 9 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 24 - i32.shr_u - local.get $4 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 13 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 24 - i32.shr_u - local.get $3 - i32.const 8 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|3 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block local.get $1 i32.load local.set $3 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - local.get $2 - i32.const 2 - i32.sub - local.set $2 - block $break|4 - loop $continue|4 - local.get $2 - i32.const 18 - i32.ge_u - if - local.get $1 - i32.const 2 - i32.add - i32.load - local.set $4 - local.get $0 - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 6 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 4 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 10 - i32.add - i32.load - local.set $4 - local.get $0 - i32.const 8 - i32.add - local.get $3 - i32.const 16 - i32.shr_u - local.get $4 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 14 - i32.add - i32.load - local.set $3 - local.get $0 - i32.const 12 - i32.add - local.get $4 - i32.const 16 - i32.shr_u - local.get $3 - i32.const 16 - i32.shl - i32.or - i32.store - local.get $1 - i32.const 16 - i32.add - local.set $1 - local.get $0 - i32.const 16 - i32.add - local.set $0 - local.get $2 - i32.const 16 - i32.sub - local.set $2 - br $continue|4 - end - end - end - br $break|2 - unreachable - end - unreachable - end - block - local.get $1 - i32.load - local.set $3 - block (result i32) local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - local.get $2 - i32.const 1 - i32.sub - local.set $2 - block $break|5 - loop $continue|5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 local.get $2 - i32.const 19 + i32.const 17 i32.ge_u + local.set $5 + local.get $5 if local.get $1 - i32.const 3 + i32.const 1 i32.add i32.load local.set $4 local.get $0 local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 7 + i32.const 5 i32.add i32.load local.set $3 @@ -695,15 +447,15 @@ i32.const 4 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 11 + i32.const 9 i32.add i32.load local.set $4 @@ -711,15 +463,15 @@ i32.const 8 i32.add local.get $3 - i32.const 8 + i32.const 24 i32.shr_u local.get $4 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store local.get $1 - i32.const 15 + i32.const 13 i32.add i32.load local.set $3 @@ -727,10 +479,10 @@ i32.const 12 i32.add local.get $4 - i32.const 8 + i32.const 24 i32.shr_u local.get $3 - i32.const 24 + i32.const 8 i32.shl i32.or i32.store @@ -746,306 +498,466 @@ i32.const 16 i32.sub local.set $2 - br $continue|5 + br $while-continue|3 end end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end end br $break|2 - unreachable end - unreachable - end - end - local.get $2 - i32.const 16 - i32.and - if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) + i32.load + local.set $3 local.get $0 local.tee $5 i32.const 1 i32.add local.set $0 local.get $5 - end - block (result i32) local.get $1 local.tee $5 i32.const 1 i32.add local.set $1 local.get $5 - end - i32.load8_u - i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 + i32.load8_u + i32.store8 + local.get $2 i32.const 1 - i32.add - local.set $1 - local.get $5 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1053,148 +965,116 @@ i32.const 8 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1202,76 +1082,60 @@ i32.const 4 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1279,40 +1143,32 @@ i32.const 2 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end @@ -1320,31 +1176,28 @@ i32.const 1 i32.and if - block (result i32) - local.get $0 - local.tee $5 - i32.const 1 - i32.add - local.set $0 - local.get $5 - end - block (result i32) - local.get $1 - local.tee $5 - i32.const 1 - i32.add - local.set $1 - local.get $5 - end + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 i32.load8_u i32.store8 end ) - (func $~lib/memory/memory.copy (; 8 ;) (type $FUNCSIG$viii) (param $0 i32) (param $1 i32) (param $2 i32) + (func $~lib/memory/memory.copy (; 9 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) (local $6 i32) + (local $7 i32) block $~lib/util/memory/memmove|inlined.0 local.get $0 local.set $5 @@ -1358,6 +1211,8 @@ if br $~lib/util/memory/memmove|inlined.0 end + i32.const 1 + drop local.get $4 local.get $3 i32.add @@ -1365,7 +1220,7 @@ i32.le_u if (result i32) i32.const 1 - else + else local.get $5 local.get $3 i32.add @@ -1386,106 +1241,98 @@ local.get $4 i32.const 7 i32.and - local.get $5 - i32.const 7 - i32.and - i32.eq - if - block $break|0 - loop $continue|0 - local.get $5 - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $3 - i32.const 1 - i32.sub - local.set $3 - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 - br $continue|0 - end - end - end - block $break|1 - loop $continue|1 - local.get $3 - i32.const 8 - i32.ge_u - if - local.get $5 - local.get $4 - i64.load - i64.store - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - i32.const 8 - i32.add - local.set $5 - local.get $4 - i32.const 8 - i32.add - local.set $4 - br $continue|1 + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 end end - end - block $break|2 - loop $continue|2 + loop $while-continue|1 local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 if - block (result i32) - local.get $5 - local.tee $6 - i32.const 1 - i32.add - local.set $5 - local.get $6 - end - block (result i32) - local.get $4 - local.tee $6 - i32.const 1 - i32.add - local.set $4 - local.get $6 - end - i32.load8_u - i32.store8 + local.get $5 + local.get $4 + i64.load + i64.store local.get $3 - i32.const 1 + i32.const 8 i32.sub local.set $3 - br $continue|2 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 end end end - else + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else local.get $4 i32.const 7 i32.and @@ -1494,61 +1341,20 @@ i32.and i32.eq if - block $break|3 - loop $continue|3 - local.get $5 - local.get $3 - i32.add - i32.const 7 - i32.and - if - local.get $3 - i32.eqz - if - br $~lib/util/memory/memmove|inlined.0 - end - local.get $5 - local.get $3 - i32.const 1 - i32.sub - local.tee $3 - i32.add - local.get $4 - local.get $3 - i32.add - i32.load8_u - i32.store8 - br $continue|3 - end - end - end - block $break|4 - loop $continue|4 + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if local.get $3 - i32.const 8 - i32.ge_u + i32.eqz if - local.get $3 - i32.const 8 - i32.sub - local.set $3 - local.get $5 - local.get $3 - i32.add - local.get $4 - local.get $3 - i32.add - i64.load - i64.store - br $continue|4 + br $~lib/util/memory/memmove|inlined.0 end - end - end - end - block $break|5 - loop $continue|5 - local.get $3 - if local.get $5 local.get $3 i32.const 1 @@ -1560,47 +1366,94 @@ i32.add i32.load8_u i32.store8 - br $continue|5 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 end end end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end end end ) - (func $~lib/memory/memory.repeat (; 9 ;) (type $FUNCSIG$viiii) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) + (func $~lib/memory/memory.repeat (; 10 ;) (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) i32.const 0 local.set $4 local.get $2 local.get $3 i32.mul local.set $5 - block $break|0 - loop $continue|0 + loop $while-continue|0 + local.get $4 + local.get $5 + i32.lt_u + local.set $6 + local.get $6 + if + local.get $0 local.get $4 - local.get $5 - i32.lt_u - if - local.get $0 - local.get $4 - i32.add - local.get $1 - local.get $2 - call $~lib/memory/memory.copy - local.get $4 - local.get $2 - i32.add - local.set $4 - br $continue|0 - end + i32.add + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $4 + local.get $2 + i32.add + local.set $4 + br $while-continue|0 end end ) - (func $~lib/memory/memory.compare (; 10 ;) (type $FUNCSIG$iiii) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (func $~lib/memory/memory.compare (; 11 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) block $~lib/util/memory/memcmp|inlined.0 (result i32) local.get $0 local.set $5 @@ -1615,21 +1468,44 @@ i32.const 0 br $~lib/util/memory/memcmp|inlined.0 end - block $break|0 - loop $continue|0 - local.get $3 - i32.const 0 - i32.ne - if (result i32) + i32.const 1 + drop + local.get $5 + i32.const 7 + i32.and + local.get $4 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + i32.const 0 + br $~lib/util/memory/memcmp|inlined.0 + end local.get $5 i32.load8_u + local.set $7 local.get $4 i32.load8_u - i32.eq - else - i32.const 0 - end - if + local.set $8 + local.get $7 + local.get $8 + i32.ne + if + local.get $7 + local.get $8 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end local.get $3 i32.const 1 i32.sub @@ -1642,30 +1518,138 @@ i32.const 1 i32.add local.set $4 - br $continue|0 + br $while-continue|0 + end + end + block $while-break|1 + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + i64.load + local.get $4 + i64.load + i64.ne + if + br $while-break|1 + end + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + local.get $3 + i32.const 8 + i32.sub + local.set $3 + br $while-continue|1 + end end end end - local.get $3 - if (result i32) - local.get $5 - i32.load8_u - local.get $4 - i32.load8_u + loop $while-continue|2 + local.get $3 + local.tee $6 + i32.const 1 i32.sub - else - i32.const 0 + local.set $3 + local.get $6 + local.set $6 + local.get $6 + if + local.get $5 + i32.load8_u + local.set $9 + local.get $4 + i32.load8_u + local.set $10 + local.get $9 + local.get $10 + i32.ne + if + local.get $9 + local.get $10 + i32.sub + br $~lib/util/memory/memcmp|inlined.0 + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + local.get $4 + i32.const 1 + i32.add + local.set $4 + br $while-continue|2 + end end + i32.const 0 end ) - (func $~lib/rt/stub/__free (; 11 ;) (type $FUNCSIG$vi) (param $0 i32) - nop + (func $~lib/rt/stub/__free (; 12 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 70 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 16 + i32.sub + local.set $1 + i32.const 1 + drop + local.get $1 + i32.load offset=4 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 128 + i32.const 72 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.load + i32.add + global.get $~lib/rt/stub/offset + i32.eq + if + local.get $1 + global.set $~lib/rt/stub/offset + end ) - (func $~lib/rt/stub/__reset (; 12 ;) (type $FUNCSIG$v) + (func $~lib/rt/stub/__reset (; 13 ;) global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $start (; 13 ;) (type $FUNCSIG$v) + (func $start (; 14 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add @@ -1677,6 +1661,4 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $null (; 14 ;) (type $FUNCSIG$v) - ) ) From 44034828b9b0110783d6bcac318823d2e1bf2959 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 05:56:34 +0100 Subject: [PATCH 11/19] can limit constant conditions to bools, remove drops --- src/compiler.ts | 41 +- tests/compiler/assert-nonnull.untouched.wat | 8 - tests/compiler/assert.untouched.wat | 9 - tests/compiler/binary.untouched.wat | 2 - tests/compiler/builtins.untouched.wat | 2 - tests/compiler/call-super.untouched.wat | 2 - tests/compiler/constructor.untouched.wat | 2 - tests/compiler/exports.untouched.wat | 2 - .../extends-baseaggregate.untouched.wat | 80 -- tests/compiler/features/simd.untouched.wat | 6 - tests/compiler/features/threads.untouched.wat | 2 - tests/compiler/getter-call.untouched.wat | 2 - tests/compiler/infer-array.untouched.wat | 18 - tests/compiler/inlining.untouched.wat | 2 - tests/compiler/instanceof.untouched.wat | 8 - tests/compiler/mandelbrot.untouched.wat | 4 - tests/compiler/new.untouched.wat | 2 - tests/compiler/number.untouched.wat | 22 - .../optional-typeparameters.untouched.wat | 2 - tests/compiler/possibly-null.untouched.wat | 58 +- tests/compiler/rc/global-init.untouched.wat | 68 - tests/compiler/rc/local-init.untouched.wat | 68 - .../rc/logical-and-mismatch.untouched.wat | 68 - .../rc/logical-or-mismatch.untouched.wat | 68 - tests/compiler/rc/optimize.untouched.wat | 68 - tests/compiler/rc/rereturn.untouched.wat | 68 - .../rc/ternary-mismatch.untouched.wat | 68 - tests/compiler/resolve-access.untouched.wat | 26 - tests/compiler/resolve-binary.untouched.wat | 24 - .../resolve-elementaccess.untouched.wat | 16 - .../resolve-function-expression.untouched.wat | 12 - tests/compiler/resolve-new.untouched.wat | 2 - .../resolve-propertyaccess.untouched.wat | 12 - tests/compiler/resolve-ternary.untouched.wat | 91 +- tests/compiler/resolve-unary.untouched.wat | 12 - .../retain-release-sanity.untouched.wat | 85 +- tests/compiler/retain-release.untouched.wat | 2 - tests/compiler/retain-return.untouched.wat | 68 - tests/compiler/rt/instanceof.untouched.wat | 2 - tests/compiler/rt/stub-realloc.untouched.wat | 10 - tests/compiler/runtime-full.untouched.wat | 68 - tests/compiler/runtime-stub.untouched.wat | 2 - tests/compiler/std/array-access.untouched.wat | 16 - .../compiler/std/array-literal.untouched.wat | 82 +- tests/compiler/std/array.untouched.wat | 483 +------ tests/compiler/std/arraybuffer.untouched.wat | 243 +--- tests/compiler/std/dataview.untouched.wat | 106 -- tests/compiler/std/date.untouched.wat | 2 - tests/compiler/std/hash.untouched.wat | 118 -- tests/compiler/std/libm.untouched.wat | 32 - tests/compiler/std/map.untouched.wat | 998 +-------------- tests/compiler/std/math.untouched.wat | 42 - tests/compiler/std/new.untouched.wat | 2 - .../compiler/std/object-literal.untouched.wat | 4 - tests/compiler/std/object.untouched.wat | 20 - .../std/operator-overloading.untouched.wat | 4 - tests/compiler/std/pointer.untouched.wat | 18 - tests/compiler/std/polyfills.untouched.wat | 96 -- tests/compiler/std/set.untouched.wat | 608 +-------- tests/compiler/std/simd.untouched.wat | 9 - tests/compiler/std/static-array.untouched.wat | 26 - .../std/string-encoding.untouched.wat | 74 -- tests/compiler/std/string.untouched.wat | 153 +-- tests/compiler/std/symbol.untouched.wat | 70 -- tests/compiler/std/typedarray.untouched.wat | 1120 +---------------- tests/compiler/typeof.untouched.wat | 4 - tests/compiler/wasi-snapshot.untouched.wat | 6 - 67 files changed, 79 insertions(+), 5439 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 6f7d4b9924..4668802f63 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -27,7 +27,6 @@ import { FunctionRef, ExpressionId, GlobalRef, - EventRef, FeatureFlags, getExpressionId, getExpressionType, @@ -107,10 +106,10 @@ import { import { Node, NodeKind, - NamedTypeNode, Range, DecoratorKind, AssertionKind, + SourceKind, Statement, BlockStatement, @@ -121,6 +120,7 @@ import { DoStatement, EmptyStatement, EnumDeclaration, + ExportDefaultStatement, ExportStatement, ExpressionStatement, FieldDeclaration, @@ -129,7 +129,6 @@ import { IfStatement, ImportStatement, InstanceOfExpression, - InterfaceDeclaration, NamespaceDeclaration, ReturnStatement, SwitchStatement, @@ -163,9 +162,7 @@ import { nodeIsConstantValue, findDecorator, - isTypeOmitted, - ExportDefaultStatement, - SourceKind + isTypeOmitted } from "./ast"; import { @@ -1910,13 +1907,10 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - let condKind = evaluateConditionKind(condExpr); + let condKind = evaluateBooleanConditionKind(condExpr); // Shortcut if condition is always false if (condKind == ConditionKind.FALSE) { - bodyStmts.push( - module.drop(condExpr) - ); this.performAutoreleases(condFlow, bodyStmts); flow.inherit(bodyFlow); } else { @@ -2053,7 +2047,7 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - condKind = evaluateConditionKind(condExpr); + condKind = evaluateBooleanConditionKind(condExpr); // Shortcut if condition is always false (body never runs) if (condKind == ConditionKind.FALSE) { @@ -2077,7 +2071,9 @@ export class Compiler extends DiagnosticEmitter { // Store condition result in a temp while we autorelease var tcond = flow.getTempLocal(Type.bool); var loopStmts = new Array(); - loopStmts.push(module.local_set(tcond.index, condExpr)); + loopStmts.push( + module.local_set(tcond.index, condExpr) + ); this.performAutoreleases(condFlow, loopStmts); condFlow.freeScopedLocals(); @@ -2208,23 +2204,17 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - var condKind = evaluateConditionKind(condExpr); + var condKind = evaluateBooleanConditionKind(condExpr); // Shortcut if the condition is constant switch (condKind) { case ConditionKind.TRUE: { - return module.block(null, [ - module.drop(condExpr), - this.compileStatement(ifTrue) - ]); + return this.compileStatement(ifTrue); } case ConditionKind.FALSE: { return ifFalse - ? module.block(null, [ - module.drop(condExpr), - this.compileStatement(ifFalse) - ]) - : module.drop(condExpr); + ? this.compileStatement(ifFalse) + : module.nop(); } } @@ -2773,13 +2763,10 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - var condKind = evaluateConditionKind(condExpr); + var condKind = evaluateBooleanConditionKind(condExpr); // Shortcut if condition is always false (body never runs) if (condKind == ConditionKind.FALSE) { - stmts.push( - module.drop(condExpr) - ); this.performAutoreleases(condFlow, stmts); assert(!flow.hasScopedLocals); outerFlow.popBreakLabel(); @@ -9465,7 +9452,7 @@ var mangleImportName_moduleName: string; var mangleImportName_elementName: string; /** Evaluates the kind of a boolean condition from its expression. */ -function evaluateConditionKind(expr: ExpressionRef): ConditionKind { +function evaluateBooleanConditionKind(expr: ExpressionRef): ConditionKind { assert(getExpressionType(expr) == NativeType.I32); if (getExpressionId(expr) == ExpressionId.Const) { return getConstValueI32(expr) diff --git a/tests/compiler/assert-nonnull.untouched.wat b/tests/compiler/assert-nonnull.untouched.wat index 5c4dfa8d68..88bea7f8a1 100644 --- a/tests/compiler/assert-nonnull.untouched.wat +++ b/tests/compiler/assert-nonnull.untouched.wat @@ -115,10 +115,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -180,10 +176,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 0 - drop local.get $2 ) (func $assert-nonnull/testElem (; 11 ;) (param $0 i32) (result i32) diff --git a/tests/compiler/assert.untouched.wat b/tests/compiler/assert.untouched.wat index cdef3aba3d..bffe105a3d 100644 --- a/tests/compiler/assert.untouched.wat +++ b/tests/compiler/assert.untouched.wat @@ -1,14 +1,5 @@ (module - (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) - (func $start:assert (; 0 ;) - i32.const 0 - drop - ) - (func $start (; 1 ;) - call $start:assert - ) ) diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index 157369ca70..035d085fb8 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -74,8 +74,6 @@ (local $42 i32) (local $43 i64) (local $44 i64) - i32.const 1 - drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index 9d397069c8..d0123a1a23 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -135,8 +135,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 7cb9a48973..934a6d39cd 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -109,8 +109,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index 7c02dffa3f..a8cd22e5b4 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -117,8 +117,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 6faa0915ed..05195d3571 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -163,8 +163,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index f728cc5fb8..851f92a65a 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -50,8 +50,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -70,8 +68,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -124,8 +120,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -265,8 +259,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -280,8 +272,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -375,8 +365,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -433,8 +421,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -454,8 +440,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -510,8 +494,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -622,8 +604,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -661,8 +641,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -694,8 +672,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1007,8 +983,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1081,8 +1055,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1187,8 +1159,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1514,8 +1484,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1607,8 +1575,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1632,13 +1598,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1655,8 +1617,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1676,8 +1636,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1690,8 +1648,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1720,8 +1676,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1765,10 +1719,6 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1837,8 +1787,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2877,8 +2825,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3093,8 +3039,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -3220,8 +3164,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop end local.get $8 ) @@ -3270,8 +3212,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -3666,16 +3606,12 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 0 - drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - i32.const 0 - drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3720,10 +3656,6 @@ i32.const 268435455 i32.and local.set $2 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3765,8 +3697,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3847,8 +3777,6 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $2 @@ -3930,8 +3858,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4002,8 +3928,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -4021,8 +3945,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -4062,8 +3984,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 8aab990cf1..84232c7893 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -115,8 +115,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -154,8 +152,6 @@ i32.const 16 i32.sub local.set $1 - i32.const 1 - drop local.get $1 i32.load offset=4 i32.const 1 @@ -2286,8 +2282,6 @@ global.set $~lib/rt/stub/startOffset global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset - i32.const 1 - drop call $features/simd/test_v128 call $features/simd/test_i8x16 call $features/simd/test_i16x8 diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat index adf8ab9ffc..e92ea98dd5 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.untouched.wat @@ -535,8 +535,6 @@ drop ) (func $start:features/threads (; 2 ;) - i32.const 1 - drop call $features/threads/testAtomic call $features/threads/testAtomicAsm ) diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index feac8d4d3f..f679e4580b 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -111,8 +111,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index a1daeae303..359bdf6584 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -121,8 +121,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -142,8 +140,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -1182,8 +1178,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -1450,8 +1444,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/rt/stub/__release (; 9 ;) (param $0 i32) @@ -1484,8 +1476,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 12 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1515,8 +1505,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 14 ;) (param $0 i32) (param $1 i32) (result f32) @@ -1546,8 +1534,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $infer-array/Ref#constructor (; 16 ;) (param $0 i32) (result i32) @@ -1590,10 +1576,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 0 - drop local.get $2 ) (func $start:infer-array (; 19 ;) diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 5754c4569e..5052114f02 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -372,8 +372,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 3a453467fb..554ddde4a4 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -18,26 +18,18 @@ (export "memory" (memory $0)) (start $start) (func $instanceof/isI32 (; 1 ;) (param $0 i32) (result i32) - i32.const 1 - drop i32.const 1 return ) (func $instanceof/isI32 (; 2 ;) (param $0 f64) (result i32) - i32.const 0 - drop i32.const 0 return ) (func $instanceof/isI32 (; 3 ;) (param $0 i32) (result i32) - i32.const 0 - drop i32.const 0 return ) (func $instanceof/isI32 (; 4 ;) (param $0 i32) (result i32) - i32.const 0 - drop i32.const 0 return ) diff --git a/tests/compiler/mandelbrot.untouched.wat b/tests/compiler/mandelbrot.untouched.wat index c345e0c161..4afa6f3586 100644 --- a/tests/compiler/mandelbrot.untouched.wat +++ b/tests/compiler/mandelbrot.untouched.wat @@ -42,8 +42,6 @@ (local $18 i32) (local $19 f64) (local $20 f64) - i32.const 1 - drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -376,8 +374,6 @@ (local $23 f64) (local $24 f64) (local $25 f64) - i32.const 1 - drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index e6f6f2731b..b46e25b86c 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -109,8 +109,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index e46edb8f9f..02f34f7951 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -223,8 +223,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -424,8 +422,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -440,12 +436,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -490,8 +480,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -1192,8 +1180,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2232,8 +2218,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -2654,8 +2638,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -2728,8 +2710,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -3311,8 +3291,6 @@ i32.const 16 i32.sub local.set $1 - i32.const 1 - drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index d9bac43f25..6017482a21 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -116,8 +116,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/possibly-null.untouched.wat b/tests/compiler/possibly-null.untouched.wat index bf1c67a71d..8baf27bd9c 100644 --- a/tests/compiler/possibly-null.untouched.wat +++ b/tests/compiler/possibly-null.untouched.wat @@ -35,8 +35,7 @@ local.set $0 local.get $0 if - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -52,8 +51,7 @@ call $~lib/rt/stub/__release return else - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -69,8 +67,6 @@ call $~lib/rt/stub/__release return end - i32.const 0 - drop local.get $0 call $~lib/rt/stub/__release ) @@ -82,8 +78,7 @@ i32.const 0 i32.ne if - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -100,8 +95,7 @@ call $~lib/rt/stub/__release return else - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -118,8 +112,6 @@ call $~lib/rt/stub/__release return end - i32.const 0 - drop local.get $0 call $~lib/rt/stub/__release ) @@ -132,8 +124,7 @@ i32.eq i32.eqz if - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -151,8 +142,7 @@ call $~lib/rt/stub/__release return else - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -170,8 +160,6 @@ call $~lib/rt/stub/__release return end - i32.const 0 - drop local.get $0 call $~lib/rt/stub/__release ) @@ -187,8 +175,6 @@ local.set $1 local.get $1 if - i32.const 0 - drop i32.const 0 local.tee $2 local.get $0 @@ -203,8 +189,6 @@ end local.get $2 local.set $0 - i32.const 0 - drop br $while-continue|0 end end @@ -226,8 +210,6 @@ local.set $2 local.get $2 if - i32.const 0 - drop local.get $1 local.tee $3 local.get $0 @@ -242,8 +224,6 @@ end local.get $3 local.set $0 - i32.const 0 - drop br $while-continue|0 end end @@ -267,8 +247,6 @@ local.set $2 local.get $2 if - i32.const 0 - drop local.get $1 if local.get $1 @@ -285,8 +263,6 @@ end local.get $3 local.set $0 - i32.const 0 - drop end br $while-continue|0 end @@ -363,15 +339,9 @@ i32.const 0 end if - i32.const 0 - drop - i32.const 0 - drop + nop else - i32.const 0 - drop - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -394,15 +364,9 @@ i32.eqz end if - i32.const 0 - drop - i32.const 0 - drop + nop else - i32.const 0 - drop - i32.const 0 - drop + nop end local.get $0 call $~lib/rt/stub/__release @@ -432,8 +396,6 @@ end local.get $2 local.set $0 - i32.const 0 - drop local.get $0 call $~lib/rt/stub/__release local.get $1 diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index dcc2d89fdf..54e273e99a 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -66,12 +66,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -113,8 +109,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -133,8 +127,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -187,8 +179,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -328,8 +318,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -343,8 +331,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -438,8 +424,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -496,8 +480,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -517,8 +499,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -573,8 +553,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -703,8 +681,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -741,8 +717,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -780,8 +754,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -813,8 +785,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1126,8 +1096,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1200,8 +1168,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1604,8 +1570,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1697,8 +1661,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 23 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1722,13 +1684,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1745,8 +1703,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1766,8 +1722,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1780,8 +1734,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1810,8 +1762,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1834,8 +1784,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2874,8 +2822,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3134,8 +3080,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3146,8 +3090,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3196,12 +3138,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3243,8 +3181,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3394,8 +3330,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3466,8 +3400,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index 102e678c66..f255370c27 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -47,8 +47,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -67,8 +65,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -121,8 +117,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -262,8 +256,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -277,8 +269,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -372,8 +362,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -430,8 +418,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -451,8 +437,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -507,8 +491,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -637,8 +619,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -675,8 +655,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -714,8 +692,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -747,8 +723,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1060,8 +1034,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1134,8 +1106,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1538,8 +1508,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1631,8 +1599,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1656,13 +1622,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1679,8 +1641,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1700,8 +1660,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1714,8 +1672,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1744,8 +1700,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1768,8 +1722,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2808,8 +2760,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3068,8 +3018,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3080,8 +3028,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3130,12 +3076,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3177,8 +3119,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3272,12 +3212,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3384,8 +3320,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3456,8 +3390,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index 55ed027719..8bcf5c9a8d 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -47,8 +47,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -67,8 +65,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -121,8 +117,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -262,8 +256,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -277,8 +269,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -372,8 +362,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -430,8 +418,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -451,8 +437,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -507,8 +491,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -619,8 +601,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -658,8 +638,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -691,8 +669,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1004,8 +980,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1078,8 +1052,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1184,8 +1156,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1513,8 +1483,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1606,8 +1574,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1631,13 +1597,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1654,8 +1616,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1675,8 +1635,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1689,8 +1647,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1719,8 +1675,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1766,12 +1720,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1845,8 +1795,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2885,8 +2833,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3145,8 +3091,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3157,8 +3101,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3207,12 +3149,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3254,8 +3192,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3424,8 +3360,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3496,8 +3430,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 4f24efa95d..6dae2b6b19 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -47,8 +47,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -67,8 +65,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -121,8 +117,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -262,8 +256,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -277,8 +269,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -372,8 +362,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -430,8 +418,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -451,8 +437,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -507,8 +491,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -619,8 +601,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -658,8 +638,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -691,8 +669,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1004,8 +980,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1078,8 +1052,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1184,8 +1156,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1513,8 +1483,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1606,8 +1574,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1631,13 +1597,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1654,8 +1616,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1675,8 +1635,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1689,8 +1647,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1719,8 +1675,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1766,12 +1720,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1845,8 +1795,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2885,8 +2833,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3145,8 +3091,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3157,8 +3101,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3207,12 +3149,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3254,8 +3192,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3424,8 +3360,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3496,8 +3430,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/optimize.untouched.wat b/tests/compiler/rc/optimize.untouched.wat index b66c78d24e..ad1efd71fb 100644 --- a/tests/compiler/rc/optimize.untouched.wat +++ b/tests/compiler/rc/optimize.untouched.wat @@ -99,12 +99,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -146,8 +142,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -166,8 +160,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -220,8 +212,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -361,8 +351,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -376,8 +364,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -471,8 +457,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -529,8 +513,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -550,8 +532,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -606,8 +586,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -718,8 +696,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -757,8 +733,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -790,8 +764,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1103,8 +1075,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1177,8 +1147,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1283,8 +1251,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1612,8 +1578,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1705,8 +1669,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1730,13 +1692,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1753,8 +1711,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1774,8 +1730,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1788,8 +1742,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1818,8 +1770,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1883,8 +1833,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2923,8 +2871,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3183,8 +3129,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3195,8 +3139,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3245,12 +3187,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3292,8 +3230,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3676,8 +3612,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3748,8 +3682,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 5fe6bef691..547c0f9cfd 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -47,8 +47,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -67,8 +65,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -121,8 +117,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -262,8 +256,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -277,8 +269,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -372,8 +362,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -430,8 +418,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -451,8 +437,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -507,8 +491,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -619,8 +601,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -658,8 +638,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -691,8 +669,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1004,8 +980,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1078,8 +1052,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1184,8 +1156,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1511,8 +1481,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1604,8 +1572,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1629,13 +1595,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1652,8 +1614,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1673,8 +1633,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1687,8 +1645,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1717,8 +1673,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1762,10 +1716,6 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1823,8 +1773,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2863,8 +2811,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3123,16 +3069,12 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 0 - drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - i32.const 0 - drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3177,10 +3119,6 @@ i32.const 268435455 i32.and local.set $2 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3222,8 +3160,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3360,8 +3296,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3432,8 +3366,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 2d5713af34..7f0c196616 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -49,8 +49,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -69,8 +67,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -123,8 +119,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -264,8 +258,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -279,8 +271,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -374,8 +364,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -432,8 +420,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -453,8 +439,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -509,8 +493,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -621,8 +603,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -660,8 +640,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -693,8 +671,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1006,8 +982,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1080,8 +1054,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1186,8 +1158,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1515,8 +1485,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1608,8 +1576,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1633,13 +1599,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1656,8 +1618,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1677,8 +1637,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1691,8 +1649,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1721,8 +1677,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1768,12 +1722,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1856,8 +1806,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2896,8 +2844,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3156,8 +3102,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3168,8 +3112,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3218,12 +3160,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3265,8 +3203,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3408,8 +3344,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3480,8 +3414,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index 00febf3a0f..bdcf751fae 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -125,8 +125,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -146,8 +144,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -1186,8 +1182,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -1454,8 +1448,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/util/number/decimalCount32 (; 9 ;) (param $0 i32) (result i32) @@ -1906,8 +1898,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -1928,8 +1918,6 @@ local.set $7 local.get $3 local.set $4 - i32.const 0 - drop local.get $5 local.get $7 local.get $4 @@ -1939,12 +1927,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 14 ;) (param $0 i64) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 call $~lib/util/number/utoa64 return @@ -2039,8 +2021,6 @@ local.set $4 local.get $1 local.set $3 - i32.const 0 - drop local.get $5 local.get $4 local.get $3 @@ -2049,12 +2029,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 22 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/utoa32 return diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index b9f536fb11..1b7b1cde3b 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -127,8 +127,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -461,8 +459,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -659,8 +655,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -675,12 +669,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 12 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -733,8 +721,6 @@ (local $42 i32) (local $43 i64) (local $44 i64) - i32.const 1 - drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -2136,8 +2122,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3176,8 +3160,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3598,8 +3580,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -3672,8 +3652,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -4255,8 +4233,6 @@ i32.const 16 i32.sub local.set $1 - i32.const 1 - drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index 2376b590f9..f773e92468 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -148,8 +148,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -176,8 +174,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -1164,8 +1160,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2204,8 +2198,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -2770,8 +2762,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -2844,8 +2834,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -3435,8 +3423,6 @@ i32.const 16 i32.sub local.set $1 - i32.const 1 - drop local.get $1 i32.load offset=4 i32.const 1 @@ -3552,8 +3538,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index 41900575be..d972f04f9f 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -200,8 +200,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -401,8 +399,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -417,12 +413,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 10 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -467,8 +457,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index a058ae096d..4dd064abbb 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -107,8 +107,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 8356712c9b..486a72d74f 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -200,8 +200,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -401,8 +399,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -417,12 +413,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -467,8 +457,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index 4a5a41ceb6..ae9bd9b726 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -82,8 +82,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -102,8 +100,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -156,8 +152,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -297,8 +291,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -312,8 +304,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -407,8 +397,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -465,8 +453,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -486,8 +472,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -542,8 +526,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -654,8 +636,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -693,8 +673,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -726,8 +704,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1039,8 +1015,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1113,8 +1087,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1219,8 +1191,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1546,8 +1516,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1639,8 +1607,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1664,13 +1630,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1687,8 +1649,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1708,8 +1668,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1722,8 +1680,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1752,8 +1708,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1797,10 +1751,6 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1858,8 +1808,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2898,8 +2846,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3158,16 +3104,12 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 0 - drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - i32.const 0 - drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3212,10 +3154,6 @@ i32.const 268435455 i32.and local.set $2 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3257,8 +3195,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3572,8 +3508,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -3588,12 +3522,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 30 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -3635,8 +3563,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -4551,8 +4477,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -4625,8 +4549,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -5381,16 +5303,13 @@ call $start:resolve-ternary ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 50 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 51 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 52 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -5440,8 +5359,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -5512,8 +5429,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index ac0cdc9972..3fb47d489a 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -199,8 +199,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -400,8 +398,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -416,12 +412,6 @@ call $~lib/rt/stub/__retain ) (func $~lib/util/number/itoa (; 7 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -466,8 +456,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 2975bc7cd8..3e3214f4a7 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -55,8 +55,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -75,8 +73,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -129,8 +125,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -270,8 +264,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -285,8 +277,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -380,8 +370,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -438,8 +426,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -459,8 +445,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -515,8 +499,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -627,8 +609,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -666,8 +646,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -699,8 +677,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1012,8 +988,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1086,8 +1060,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1192,8 +1164,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1521,8 +1491,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1614,8 +1582,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1639,13 +1605,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1662,8 +1624,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1683,8 +1643,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1697,8 +1655,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1727,8 +1683,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1761,8 +1715,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2040,12 +1992,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -2103,8 +2051,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3143,8 +3089,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3403,8 +3347,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3415,8 +3357,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3465,12 +3405,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3512,8 +3448,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3683,8 +3617,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -3810,8 +3742,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -3924,8 +3854,6 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $2 @@ -4034,8 +3962,6 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $2 @@ -4402,8 +4328,7 @@ call $start:retain-release-sanity ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 50 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -4453,8 +4378,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4525,8 +4448,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -4544,8 +4465,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -4585,8 +4504,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index 226040bc6b..b91746a3e7 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -154,8 +154,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 5f09b16748..931f72995d 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -53,8 +53,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -73,8 +71,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -127,8 +123,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -268,8 +262,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -283,8 +275,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -378,8 +368,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -436,8 +424,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -457,8 +443,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -513,8 +497,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -625,8 +607,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -664,8 +644,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -697,8 +675,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1010,8 +986,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1084,8 +1058,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1190,8 +1162,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1517,8 +1487,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1610,8 +1578,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1635,13 +1601,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1658,8 +1620,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1679,8 +1639,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1693,8 +1651,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1723,8 +1679,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1768,10 +1722,6 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1845,8 +1795,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2885,8 +2833,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3145,16 +3091,12 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 0 - drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - i32.const 0 - drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3199,10 +3141,6 @@ i32.const 268435455 i32.and local.set $2 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3244,8 +3182,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3501,8 +3437,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3573,8 +3507,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 39aab0e75c..2a483f711f 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -121,8 +121,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index bca90acb45..57d057fb07 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -123,8 +123,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -150,8 +148,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -1190,8 +1186,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -1427,8 +1421,6 @@ local.get $2 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 1 @@ -1544,8 +1536,6 @@ i32.const 16 i32.sub local.set $1 - i32.const 1 - drop local.get $1 i32.load offset=4 i32.const 1 diff --git a/tests/compiler/runtime-full.untouched.wat b/tests/compiler/runtime-full.untouched.wat index 050db1418b..ec352a486f 100644 --- a/tests/compiler/runtime-full.untouched.wat +++ b/tests/compiler/runtime-full.untouched.wat @@ -46,8 +46,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -66,8 +64,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -120,8 +116,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -261,8 +255,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -276,8 +268,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -371,8 +361,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -429,8 +417,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -450,8 +436,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -506,8 +490,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -618,8 +600,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -657,8 +637,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -690,8 +668,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1003,8 +979,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1077,8 +1051,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1183,8 +1155,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 0 - drop ) (func $~lib/rt/pure/scanBlack (; 9 ;) (param $0 i32) local.get $0 @@ -1510,8 +1480,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1603,8 +1571,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 15 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1628,13 +1594,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1651,8 +1613,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1672,8 +1632,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1686,8 +1644,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1716,8 +1672,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 0 - drop local.get $3 ) (func $~lib/rt/tlsf/__alloc (; 16 ;) (param $0 i32) (param $1 i32) (result i32) @@ -1761,10 +1715,6 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1822,8 +1772,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2862,8 +2810,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3122,16 +3068,12 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 0 - drop local.get $5 local.get $0 local.get $1 call $~lib/memory/memory.copy local.get $0 if - i32.const 0 - drop local.get $0 call $~lib/rt/tlsf/__free end @@ -3176,10 +3118,6 @@ i32.const 268435455 i32.and local.set $2 - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3221,8 +3159,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3333,8 +3269,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -3405,8 +3339,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 774cd2aa2a..ec8390a863 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -113,8 +113,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/std/array-access.untouched.wat b/tests/compiler/std/array-access.untouched.wat index 5fccfcf687..82898f2501 100644 --- a/tests/compiler/std/array-access.untouched.wat +++ b/tests/compiler/std/array-access.untouched.wat @@ -54,10 +54,6 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -99,8 +95,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/array-access/i32ArrayArrayElementAccess (; 7 ;) (param $0 i32) (result i32) @@ -150,10 +144,6 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -219,8 +209,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -441,10 +429,6 @@ local.get $1 call $~lib/array/Array<~lib/array/Array<~lib/string/String>>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index 72da4370b8..cbd7c80bcf 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -80,8 +80,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#get:length (; 8 ;) (param $0 i32) (result i32) @@ -115,8 +113,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/rt/tlsf/removeBlock (; 11 ;) (param $0 i32) (param $1 i32) @@ -133,8 +129,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -153,8 +147,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -207,8 +199,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -348,8 +338,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -363,8 +351,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -458,8 +444,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -516,8 +500,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -537,8 +519,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -593,8 +573,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -705,8 +683,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -744,8 +720,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -777,8 +751,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1090,8 +1062,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1164,8 +1134,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1270,8 +1238,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1599,8 +1565,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1692,8 +1656,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1717,13 +1679,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1740,8 +1698,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1761,8 +1717,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1775,8 +1729,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1805,8 +1757,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1852,12 +1802,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1890,8 +1836,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2930,8 +2874,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3285,8 +3227,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3297,8 +3237,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3347,12 +3285,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3394,8 +3328,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3904,12 +3836,10 @@ call $start:std/array-literal ) (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 46 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 47 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3959,8 +3889,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4031,8 +3959,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -4050,8 +3976,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -4091,8 +4015,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 7ab3355162..3d4719bce0 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -266,8 +266,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -286,8 +284,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -340,8 +336,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -481,8 +475,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -496,8 +488,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -591,8 +581,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -649,8 +637,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -670,8 +656,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -726,8 +710,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -838,8 +820,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -877,8 +857,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -910,8 +888,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1223,8 +1199,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1297,8 +1271,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1403,8 +1375,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1732,8 +1702,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1825,8 +1793,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1850,13 +1816,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1873,8 +1835,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1894,8 +1854,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1908,8 +1866,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1938,8 +1894,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1972,8 +1926,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2251,12 +2203,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -2314,8 +2262,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3354,8 +3300,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3614,8 +3558,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3626,8 +3568,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3676,12 +3616,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3723,8 +3659,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -4111,10 +4045,6 @@ select end local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 i32.lt_s @@ -4162,8 +4092,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/array/isArraysEqual (; 48 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4219,8 +4147,6 @@ local.set $4 local.get $4 if - i32.const 0 - drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4314,10 +4240,6 @@ select end local.set $3 - i32.const 0 - drop - i32.const 0 - drop loop $for-loop|0 local.get $2 local.get $3 @@ -4373,8 +4295,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/array/isArraysEqual (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -4430,8 +4350,6 @@ local.set $4 local.get $4 if - i32.const 0 - drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -4508,8 +4426,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -4635,8 +4551,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4749,8 +4663,6 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $2 @@ -4791,8 +4703,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#pop (; 63 ;) (param $0 i32) (result i32) @@ -4837,8 +4747,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 1 - drop local.get $2 local.get $1 i32.gt_s @@ -4939,8 +4847,6 @@ i32.const 2 i32.shl local.set $7 - i32.const 0 - drop local.get $6 local.get $0 i32.load offset=4 @@ -5073,8 +4979,6 @@ i32.lt_s select local.set $11 - i32.const 0 - drop local.get $4 local.get $8 i32.const 2 @@ -5145,8 +5049,6 @@ local.set $4 local.get $4 if - i32.const 0 - drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -5204,8 +5106,6 @@ i32.const 2 i32.shl call $~lib/memory/memory.copy - i32.const 0 - drop local.get $3 local.get $1 i32.store @@ -5526,8 +5426,6 @@ i32.const -1 ) (func $~lib/array/Array#includes (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) - i32.const 0 - drop local.get $0 local.get $1 local.get $2 @@ -5541,8 +5439,6 @@ (local $4 i32) (local $5 i32) (local $6 f32) - i32.const 1 - drop local.get $0 i32.load offset=12 local.set $3 @@ -5626,8 +5522,6 @@ (local $4 i32) (local $5 i32) (local $6 f64) - i32.const 1 - drop local.get $0 i32.load offset=12 local.set $3 @@ -5950,10 +5844,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -6108,15 +5998,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -6817,8 +6701,6 @@ local.get $1 call_indirect (type $i32_i32_i32_=>_f32) local.set $8 - i32.const 0 - drop local.get $4 local.get $5 i32.const 2 @@ -6866,8 +6748,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $start:std/array~anonymous|22 (; 118 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -6940,8 +6820,6 @@ local.get $1 call_indirect (type $i32_i32_i32_=>_i32) local.set $7 - i32.const 0 - drop local.get $4 local.get $5 i32.const 2 @@ -8082,8 +7960,6 @@ local.set $7 local.get $1 local.set $6 - i32.const 0 - drop local.get $7 i32.const 256 i32.lt_s @@ -8144,12 +8020,6 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop i32.const 44 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -8214,8 +8084,6 @@ local.get $4 if block $for-continue|0 - i32.const 1 - drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -8705,8 +8573,6 @@ local.set $7 local.get $1 local.set $6 - i32.const 0 - drop local.get $7 i32.const 256 i32.lt_s @@ -8767,12 +8633,6 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop i32.const 45 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -8813,8 +8673,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/array/isArraysEqual (; 162 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -8872,8 +8730,6 @@ local.get $4 if block $for-continue|0 - i32.const 1 - drop local.get $0 local.get $3 call $~lib/array/Array#__get @@ -9361,8 +9217,6 @@ local.set $5 local.get $1 local.set $4 - i32.const 0 - drop local.get $5 i32.const 256 i32.lt_s @@ -9395,10 +9249,6 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 1 - drop i32.const 46 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -9843,8 +9693,6 @@ local.set $5 local.get $1 local.set $4 - i32.const 0 - drop local.get $5 i32.const 256 i32.lt_s @@ -9881,10 +9729,6 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 1 - drop - i32.const 0 - drop i32.const 47 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -10108,10 +9952,6 @@ local.set $0 local.get $0 block $~lib/util/sort/COMPARATOR|inlined.1 (result i32) - i32.const 1 - drop - i32.const 1 - drop i32.const 48 br $~lib/util/sort/COMPARATOR|inlined.1 end @@ -10167,8 +10007,6 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $1 @@ -10463,8 +10301,6 @@ local.set $4 local.get $1 local.set $6 - i32.const 1 - drop local.get $5 local.get $4 local.get $6 @@ -10504,10 +10340,6 @@ local.get $1 call $~lib/array/Array<~lib/array/Array>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -10657,8 +10489,6 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $1 @@ -10946,8 +10776,6 @@ local.set $4 local.get $1 local.set $6 - i32.const 1 - drop local.get $5 local.get $4 local.get $6 @@ -10987,10 +10815,6 @@ local.get $1 call $~lib/array/Array>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -11259,8 +11083,6 @@ local.set $4 local.get $1 local.set $6 - i32.const 1 - drop local.get $5 local.get $4 local.get $6 @@ -11300,10 +11122,6 @@ local.get $1 call $~lib/array/Array<~lib/string/String | null>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 0 - drop local.get $2 ) (func $std/array/isSorted<~lib/string/String | null> (; 214 ;) (param $0 i32) (param $1 i32) (result i32) @@ -11431,8 +11249,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -11648,12 +11464,6 @@ unreachable end block $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 55 br $~lib/util/sort/COMPARATOR<~lib/string/String | null>|inlined.0 end @@ -11810,8 +11620,6 @@ local.set $4 local.get $4 if - i32.const 0 - drop local.get $0 local.get $3 call $~lib/array/Array<~lib/string/String | null>#__get @@ -12068,8 +11876,6 @@ local.get $2 call $~lib/rt/pure/__retain local.set $2 - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $1 @@ -12335,8 +12141,6 @@ local.set $4 local.get $1 local.set $6 - i32.const 1 - drop local.get $5 local.get $4 local.get $6 @@ -12376,10 +12180,6 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -12604,12 +12404,6 @@ unreachable end block $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 56 br $~lib/util/sort/COMPARATOR<~lib/string/String>|inlined.0 end @@ -12914,8 +12708,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -13177,8 +12969,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -13193,12 +12983,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 246 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -13226,8 +13010,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i32.const 0 i32.lt_s @@ -13239,8 +13021,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 call $~lib/util/number/decimalCount32 local.get $4 @@ -13252,8 +13032,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -13422,10 +13200,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -13463,8 +13237,6 @@ local.set $4 local.get $1 local.set $3 - i32.const 0 - drop local.get $5 local.get $4 local.get $3 @@ -13473,12 +13245,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 251 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/utoa32 return @@ -13505,10 +13271,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/number/decimalCount32 local.set $3 @@ -13518,8 +13280,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -13682,10 +13442,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -14440,8 +14196,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -14514,8 +14268,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -15255,12 +15007,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -15513,16 +15259,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -15760,18 +15496,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -16006,18 +15730,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -16034,12 +15746,6 @@ call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 272 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 24 i32.shl @@ -16075,8 +15781,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -16092,8 +15796,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -16113,8 +15815,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -16283,10 +15983,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -16303,12 +15999,6 @@ call $~lib/array/Array#join ) (func $~lib/util/number/itoa (; 277 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 65535 i32.and @@ -16339,10 +16029,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -16356,8 +16042,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -16520,10 +16204,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -16777,8 +16457,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -16799,8 +16477,6 @@ local.set $7 local.get $3 local.set $4 - i32.const 0 - drop local.get $5 local.get $7 local.get $4 @@ -16810,12 +16486,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 285 ;) (param $0 i64) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 call $~lib/util/number/utoa64 return @@ -16846,10 +16516,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 0 - drop local.get $2 i64.const 4294967295 i64.le_u @@ -16866,8 +16532,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -16882,8 +16546,6 @@ local.set $8 local.get $3 local.set $5 - i32.const 0 - drop local.get $6 local.get $8 local.get $5 @@ -17047,10 +16709,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -17118,8 +16776,6 @@ local.set $6 local.get $4 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -17142,8 +16798,6 @@ local.set $8 local.get $4 local.set $5 - i32.const 0 - drop local.get $6 local.get $8 local.get $5 @@ -17159,12 +16813,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 291 ;) (param $0 i64) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop local.get $0 call $~lib/util/number/itoa64 return @@ -17196,8 +16844,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i64.const 0 i64.lt_s @@ -17209,8 +16855,6 @@ i64.sub local.set $2 end - i32.const 0 - drop local.get $2 i64.const 4294967295 i64.le_u @@ -17229,8 +16873,6 @@ local.set $7 local.get $3 local.set $6 - i32.const 0 - drop local.get $8 local.get $7 local.get $6 @@ -17247,8 +16889,6 @@ local.set $9 local.get $3 local.set $6 - i32.const 0 - drop local.get $7 local.get $9 local.get $6 @@ -17418,10 +17058,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -17666,18 +17302,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -17694,12 +17318,6 @@ call $~lib/array/Array<~lib/array/Array>#join ) (func $~lib/util/number/itoa (; 300 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 255 i32.and @@ -17730,10 +17348,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -17747,8 +17361,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -17911,10 +17523,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -18154,18 +17762,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -18410,18 +18006,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -18661,18 +18245,6 @@ local.get $0 i32.load offset=12 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 local.get $3 local.get $1 @@ -24640,16 +24212,13 @@ call $start:std/array ) (func $~lib/array/Array#__visit_impl (; 317 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 318 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 319 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 320 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24699,8 +24268,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -24771,8 +24338,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -24790,8 +24355,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -24827,20 +24390,16 @@ end ) (func $~lib/array/Array#__visit_impl (; 322 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 323 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 324 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -24880,8 +24439,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -24921,8 +24478,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -24962,8 +24517,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -25003,8 +24556,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -25040,36 +24591,28 @@ end ) (func $~lib/array/Array#__visit_impl (; 329 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 330 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 331 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 332 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 333 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 334 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array<~lib/array/Array>#__visit_impl (; 335 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -25109,8 +24652,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -25150,8 +24691,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 788404fb61..961d0239bf 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -54,8 +54,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -74,8 +72,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -128,8 +124,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -269,8 +263,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -284,8 +276,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -379,8 +369,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -437,8 +425,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -458,8 +444,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -514,8 +498,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -626,8 +608,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -665,8 +645,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -698,8 +676,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1011,8 +987,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1085,8 +1059,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1191,8 +1163,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1520,8 +1490,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1613,8 +1581,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1638,13 +1604,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1661,8 +1623,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1682,8 +1642,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1696,8 +1654,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1726,8 +1682,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1760,8 +1714,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2039,12 +1991,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -2107,8 +2055,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3147,8 +3093,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3515,8 +3459,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3527,8 +3469,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3577,12 +3517,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3624,8 +3560,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3693,8 +3627,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 - drop local.get $0 i32.const 0 i32.eq @@ -3707,30 +3639,6 @@ return end i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 local.set $1 local.get $0 call $~lib/rt/pure/__release @@ -3738,40 +3646,12 @@ ) (func $~lib/arraybuffer/ArrayBuffer.isView (; 36 ;) (param $0 i32) (result i32) i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 ) (func $~lib/arraybuffer/ArrayBuffer.isView<~lib/typedarray/Uint8Array | null> (; 37 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 - drop local.get $0 i32.const 0 i32.eq @@ -3783,10 +3663,6 @@ local.get $1 return end - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -3799,8 +3675,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 - drop local.get $0 i32.const 0 i32.eq @@ -3812,18 +3686,6 @@ local.get $1 return end - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -3836,8 +3698,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 1 - drop local.get $0 i32.const 0 i32.eq @@ -3849,30 +3709,6 @@ local.get $1 return end - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -4012,32 +3848,6 @@ call $~lib/rt/pure/__retain local.set $0 i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 local.set $1 local.get $0 call $~lib/rt/pure/__release @@ -4048,12 +3858,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -4082,20 +3886,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -4210,32 +4000,6 @@ local.get $0 call $~lib/rt/pure/__retain local.set $0 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 local.set $1 local.get $0 @@ -4618,8 +4382,7 @@ call $start:std/arraybuffer ) (func $~lib/array/Array#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 53 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -4669,8 +4432,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -4741,8 +4502,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index 9a2136a3a0..c1b344e758 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -61,8 +61,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -81,8 +79,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -135,8 +131,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -276,8 +270,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -291,8 +283,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -386,8 +376,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -444,8 +432,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -465,8 +451,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -521,8 +505,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -633,8 +615,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -672,8 +652,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -705,8 +683,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1018,8 +994,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1092,8 +1066,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1198,8 +1170,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1527,8 +1497,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1620,8 +1588,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1645,13 +1611,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1668,8 +1630,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1689,8 +1649,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1703,8 +1661,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1733,8 +1689,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1767,8 +1721,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2046,12 +1998,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -2109,8 +2057,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3149,8 +3095,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3409,8 +3353,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3421,8 +3363,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3471,12 +3411,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3518,8 +3454,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3781,12 +3715,6 @@ i32.sub ) (func $~lib/polyfills/bswap (; 38 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -3840,14 +3768,6 @@ (local $1 i64) (local $2 i64) (local $3 i64) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i64.const 8 i64.shr_u @@ -3939,10 +3859,6 @@ i32.load8_s ) (func $~lib/polyfills/bswap (; 43 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -3993,12 +3909,6 @@ end ) (func $~lib/polyfills/bswap (; 45 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -4050,14 +3960,6 @@ (local $1 i64) (local $2 i64) (local $3 i64) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i64.const 8 i64.shr_u @@ -4147,10 +4049,6 @@ i32.load8_u ) (func $~lib/polyfills/bswap (; 50 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -6386,8 +6284,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -6458,8 +6354,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index e637e4b514..1079479214 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -118,8 +118,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index f2bfb62b96..bc48bec29a 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -218,8 +218,6 @@ i32.const 0 call $~lib/rt/stub/__retain local.set $0 - i32.const 1 - drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -233,8 +231,6 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.0 (result i32) i32.const 32 local.set $1 - i32.const 1 - drop local.get $1 call $~lib/util/hash/hashStr local.set $0 @@ -248,8 +244,6 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.1 (result i32) i32.const 48 local.set $0 - i32.const 1 - drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -263,8 +257,6 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.2 (result i32) i32.const 80 local.set $1 - i32.const 1 - drop local.get $1 call $~lib/util/hash/hashStr local.set $0 @@ -278,8 +270,6 @@ block $~lib/util/hash/HASH<~lib/string/String>|inlined.3 (result i32) i32.const 112 local.set $0 - i32.const 1 - drop local.get $0 call $~lib/util/hash/hashStr local.set $1 @@ -293,14 +283,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) f32.const 0 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -311,14 +293,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) f32.const 1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -329,14 +303,6 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) f32.const 1.100000023841858 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -347,14 +313,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) f32.const 0 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -365,14 +323,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) f32.const inf local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -383,14 +333,6 @@ block $~lib/util/hash/HASH|inlined.5 (result i32) f32.const nan:0x400000 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -401,16 +343,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) f64.const 0 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -421,16 +353,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) f64.const 1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -441,16 +363,6 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) f64.const 1.1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -461,16 +373,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) f64.const 0 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -481,16 +383,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) f64.const inf local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -501,16 +393,6 @@ block $~lib/util/hash/HASH|inlined.5 (result i32) f64.const nan:0x8000000000000 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 diff --git a/tests/compiler/std/libm.untouched.wat b/tests/compiler/std/libm.untouched.wat index 24f42874a8..ad2c95d19a 100644 --- a/tests/compiler/std/libm.untouched.wat +++ b/tests/compiler/std/libm.untouched.wat @@ -647,8 +647,6 @@ (local $18 i32) (local $19 f64) (local $20 f64) - i32.const 1 - drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -2054,8 +2052,6 @@ (local $3 i64) (local $4 i64) i32.const 0 - drop - i32.const 0 local.set $1 local.get $0 i64.reinterpret_f64 @@ -2676,8 +2672,6 @@ i32.const 2147483647 i32.and local.set $12 - i32.const 1 - drop local.get $12 i32.const 1073928572 i32.lt_u @@ -3403,8 +3397,6 @@ (local $20 f64) (local $21 f64) (local $22 f64) - i32.const 1 - drop block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -4306,8 +4298,6 @@ (local $23 f64) (local $24 f64) (local $25 f64) - i32.const 1 - drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -4704,8 +4694,6 @@ (local $42 i32) (local $43 i64) (local $44 i64) - i32.const 1 - drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -5598,8 +5586,6 @@ block $~lib/math/NativeMath.sign|inlined.0 (result f64) local.get $0 local.set $1 - i32.const 0 - drop local.get $1 f64.const 0 f64.gt @@ -5764,8 +5750,6 @@ i32.const 2147483647 i32.and local.set $12 - i32.const 1 - drop local.get $12 i32.const 1073928572 i32.lt_u @@ -6549,8 +6533,6 @@ i32.const 2147483647 i32.and local.set $7 - i32.const 1 - drop local.get $7 i32.const 1073928572 i32.lt_u @@ -7296,8 +7278,6 @@ (local $12 f64) (local $13 f64) (local $14 f64) - i32.const 1 - drop block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -8480,8 +8460,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u @@ -9324,8 +9302,6 @@ (local $10 f64) (local $11 i64) (local $12 i32) - i32.const 1 - drop block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -9934,8 +9910,6 @@ (local $14 f64) (local $15 f64) (local $16 f64) - i32.const 1 - drop block $~lib/util/math/log2f_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -10679,8 +10653,6 @@ block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 local.set $1 - i32.const 0 - drop local.get $1 f32.const 0 f32.gt @@ -10788,8 +10760,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u @@ -11529,8 +11499,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 38500b8e3a..41b3bf8332 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -71,8 +71,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -91,8 +89,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -145,8 +141,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -286,8 +280,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -301,8 +293,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -396,8 +386,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -454,8 +442,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -475,8 +461,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -531,8 +515,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -643,8 +625,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -682,8 +662,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -715,8 +693,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1028,8 +1004,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1102,8 +1076,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1208,8 +1180,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1537,8 +1507,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1630,8 +1598,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1655,13 +1621,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1678,8 +1640,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1699,8 +1659,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1713,8 +1671,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1743,8 +1699,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1790,12 +1744,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1838,8 +1788,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2143,8 +2091,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3183,8 +3129,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3443,8 +3387,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3455,8 +3397,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3505,12 +3445,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3552,8 +3488,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3754,14 +3688,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -3850,14 +3776,6 @@ local.get $10 i32.load8_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 @@ -3947,14 +3865,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 24 i32.shl @@ -3971,8 +3881,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -4064,14 +3972,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -4206,8 +4106,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -4333,8 +4231,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4434,8 +4330,6 @@ end ) (func $~lib/array/Array#__unchecked_set (; 47 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -4484,8 +4378,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 0 @@ -4582,8 +4474,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -4632,8 +4522,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 2 @@ -4882,8 +4770,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_get (; 63 ;) (param $0 i32) (param $1 i32) (result i32) @@ -4913,8 +4799,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -5045,14 +4929,6 @@ local.get $10 i32.load8_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.5 @@ -5142,14 +5018,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 24 i32.shl @@ -5166,8 +5034,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store8 offset=1 @@ -5417,18 +5283,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -5518,18 +5372,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -5542,8 +5384,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -5645,14 +5485,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -5669,10 +5501,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -6356,14 +6184,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -6450,14 +6270,6 @@ local.get $10 i32.load8_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 @@ -6547,14 +6359,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 255 i32.and @@ -6569,8 +6373,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -6662,14 +6464,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -6718,8 +6512,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -6768,8 +6560,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 0 @@ -7011,8 +6801,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -7141,14 +6929,6 @@ local.get $10 i32.load8_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.5 @@ -7238,14 +7018,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 255 i32.and @@ -7260,8 +7032,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store8 offset=1 @@ -7359,14 +7129,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -7381,10 +7143,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -8070,16 +7828,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -8168,16 +7916,6 @@ local.get $10 i32.load16_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 @@ -8267,16 +8005,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 16 i32.shl @@ -8293,8 +8021,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -8386,16 +8112,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -8446,8 +8162,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 111 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -8496,8 +8210,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 1 @@ -8739,8 +8451,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 121 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -8871,16 +8581,6 @@ local.get $10 i32.load16_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.5 @@ -8970,16 +8670,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 16 i32.shl @@ -8996,8 +8686,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store16 offset=2 @@ -9095,16 +8783,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -9121,10 +8799,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -9808,16 +9482,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -9904,16 +9568,6 @@ local.get $10 i32.load16_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 @@ -10003,16 +9657,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 65535 i32.and @@ -10027,8 +9671,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -10120,16 +9762,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -10178,8 +9810,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 136 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -10228,8 +9858,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 1 @@ -10471,8 +10099,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 146 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -10601,16 +10227,6 @@ local.get $10 i32.load16_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.5 @@ -10700,16 +10316,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i32.const 65535 i32.and @@ -10724,8 +10330,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store16 offset=2 @@ -10823,16 +10427,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -10847,10 +10441,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -11390,18 +10980,6 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -11418,18 +10996,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -11593,18 +11159,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -11617,10 +11171,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -12256,18 +11806,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -12352,18 +11890,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -12453,18 +11979,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -12477,8 +11991,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -12570,18 +12082,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -12628,8 +12128,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 168 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -12678,8 +12176,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 2 @@ -12921,8 +12417,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 178 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) @@ -13049,18 +12543,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.5 @@ -13150,18 +12632,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.4 @@ -13174,8 +12644,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -13273,18 +12741,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.6 @@ -13297,10 +12753,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -14024,20 +13476,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -14123,20 +13561,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -14227,20 +13651,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -14253,8 +13663,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=8 @@ -14346,20 +13754,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -14406,8 +13800,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 194 ;) (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -14456,8 +13848,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 3 @@ -14699,8 +14089,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 204 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -14828,20 +14216,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 @@ -14932,20 +14306,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -14958,8 +14318,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i64.store offset=8 @@ -15058,20 +14416,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.6 @@ -15084,10 +14428,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=12 @@ -15731,20 +15071,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -15830,20 +15156,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -15934,20 +15246,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -15960,8 +15258,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=8 @@ -16053,20 +15349,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -16113,8 +15395,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 219 ;) (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -16163,8 +15443,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 3 @@ -16406,8 +15684,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 229 ;) (param $0 i32) (param $1 i64) (param $2 i32) (result i32) @@ -16535,20 +15811,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.5 @@ -16639,20 +15901,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.4 @@ -16665,8 +15913,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i64.store offset=8 @@ -16765,20 +16011,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.6 @@ -16791,10 +16023,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=12 @@ -17438,14 +16666,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17532,14 +16752,6 @@ local.get $10 f32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17631,14 +16843,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $3 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17652,8 +16856,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=4 @@ -17745,14 +16947,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -17800,8 +16994,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 244 ;) (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -17850,8 +17042,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 2 @@ -18093,8 +17283,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 254 ;) (param $0 i32) (param $1 f32) (param $2 i32) (result i32) @@ -18222,14 +17410,6 @@ local.get $10 f32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -18321,14 +17501,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $3 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -18342,8 +17514,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 f32.store offset=4 @@ -18442,14 +17612,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -18463,10 +17625,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -19110,16 +18268,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -19206,16 +18354,6 @@ local.get $10 f64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -19307,16 +18445,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -19330,8 +18458,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 i32.store offset=8 @@ -19423,16 +18549,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -19480,8 +18596,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 269 ;) (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -19530,8 +18644,6 @@ local.get $0 i32.load offset=12 local.set $2 - i32.const 0 - drop local.get $0 local.get $1 i32.const 3 @@ -19773,8 +18885,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/map/Map#find (; 279 ;) (param $0 i32) (param $1 f64) (param $2 i32) (result i32) @@ -19902,16 +19012,6 @@ local.get $10 f64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -20003,16 +19103,6 @@ block $~lib/util/hash/HASH|inlined.4 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -20026,8 +19116,6 @@ local.set $5 local.get $5 if - i32.const 0 - drop local.get $5 local.get $2 f64.store offset=8 @@ -20126,16 +19214,6 @@ block $~lib/util/hash/HASH|inlined.6 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -20149,10 +19227,6 @@ i32.const 0 return end - i32.const 0 - drop - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=12 @@ -20732,8 +19806,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -20804,8 +19876,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -20827,19 +19897,15 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 289 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 290 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 291 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20850,8 +19916,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -20865,8 +19929,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -20880,15 +19942,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 294 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 295 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20899,8 +19958,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -20914,15 +19971,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 297 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 298 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20933,8 +19987,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -20948,15 +20000,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 300 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 301 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -20967,8 +20016,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -20982,15 +20029,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 303 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 304 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21001,8 +20045,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -21016,15 +20058,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 306 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 307 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21035,8 +20074,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -21050,15 +20087,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 309 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 310 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21069,8 +20103,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -21084,15 +20116,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 312 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 313 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21103,8 +20132,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit @@ -21118,15 +20145,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 315 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/map/Map#__visit_impl (; 316 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21137,8 +20161,6 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 20217050cc..30f927cc7c 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -372,8 +372,6 @@ f64.ne return end - i32.const 1 - drop local.get $0 local.get $1 local.get $2 @@ -602,10 +600,6 @@ f32.ne return end - i32.const 0 - drop - i32.const 1 - drop local.get $0 local.get $1 local.get $2 @@ -1338,8 +1332,6 @@ (local $18 i32) (local $19 f64) (local $20 f64) - i32.const 1 - drop block $~lib/util/math/log_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -1954,8 +1946,6 @@ (local $12 f64) (local $13 f64) (local $14 f64) - i32.const 1 - drop block $~lib/util/math/logf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -4768,8 +4758,6 @@ i32.const 2147483647 i32.and local.set $12 - i32.const 1 - drop local.get $12 i32.const 1073928572 i32.lt_u @@ -5265,8 +5253,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u @@ -6143,8 +6129,6 @@ (local $20 f64) (local $21 f64) (local $22 f64) - i32.const 1 - drop block $~lib/util/math/exp_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -6824,8 +6808,6 @@ (local $10 f64) (local $11 i64) (local $12 i32) - i32.const 1 - drop block $~lib/util/math/expf_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -8481,8 +8463,6 @@ (local $23 f64) (local $24 f64) (local $25 f64) - i32.const 1 - drop block $~lib/util/math/log2_lut|inlined.0 (result f64) local.get $0 local.set $1 @@ -8850,8 +8830,6 @@ (local $14 f64) (local $15 f64) (local $16 f64) - i32.const 1 - drop block $~lib/util/math/log2f_lut|inlined.0 (result f32) local.get $0 local.set $1 @@ -9691,8 +9669,6 @@ (local $42 i32) (local $43 i64) (local $44 i64) - i32.const 1 - drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 @@ -11400,8 +11376,6 @@ block $~lib/math/NativeMath.sign|inlined.0 (result f64) local.get $0 local.set $4 - i32.const 0 - drop local.get $4 f64.const 0 f64.gt @@ -11445,8 +11419,6 @@ block $~lib/math/NativeMathf.sign|inlined.0 (result f32) local.get $0 local.set $4 - i32.const 0 - drop local.get $4 f32.const 0 f32.gt @@ -12262,8 +12234,6 @@ i32.const 2147483647 i32.and local.set $12 - i32.const 1 - drop local.get $12 i32.const 1073928572 i32.lt_u @@ -12760,8 +12730,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u @@ -13835,8 +13803,6 @@ i32.const 2147483647 i32.and local.set $7 - i32.const 1 - drop local.get $7 i32.const 1073928572 i32.lt_u @@ -14213,8 +14179,6 @@ f32.demote_f64 return end - i32.const 1 - drop local.get $1 i32.const 1081824209 i32.le_u @@ -15229,8 +15193,6 @@ i32.const 2147483647 i32.and local.set $12 - i32.const 1 - drop local.get $12 i32.const 1073928572 i32.lt_u @@ -15673,8 +15635,6 @@ (local $3 i64) (local $4 i64) i32.const 0 - drop - i32.const 0 local.set $1 local.get $0 i64.reinterpret_f64 @@ -15784,8 +15744,6 @@ (local $4 i32) i64.const 1 local.set $2 - i32.const 1 - drop local.get $1 i32.const 0 i32.lt_s diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index d2c4567b86..4f9792186a 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -109,8 +109,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index 3195b6f545..e022022e6b 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -112,8 +112,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -164,8 +162,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index de8ef37e73..7957fe3e63 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -19,14 +19,10 @@ (export "memory" (memory $0)) (start $start) (func $~lib/object/Object.is (; 1 ;) (param $0 f64) (param $1 f64) (result i32) - i32.const 1 - drop local.get $0 local.get $1 f64.eq if - i32.const 1 - drop local.get $0 i64.reinterpret_f64 local.get $1 @@ -44,14 +40,10 @@ return ) (func $~lib/object/Object.is (; 2 ;) (param $0 f32) (param $1 f32) (result i32) - i32.const 1 - drop local.get $0 local.get $1 f32.eq if - i32.const 0 - drop local.get $0 i32.reinterpret_f32 local.get $1 @@ -69,15 +61,11 @@ return ) (func $~lib/object/Object.is (; 3 ;) (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop local.get $0 local.get $1 i32.eq ) (func $~lib/object/Object.is (; 4 ;) (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop local.get $0 i32.const 0 i32.ne @@ -125,8 +113,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -305,8 +291,6 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 - i32.const 0 - drop local.get $0 local.get $1 call $~lib/string/String.__eq @@ -318,8 +302,6 @@ local.get $2 ) (func $~lib/object/Object.is (; 11 ;) (param $0 i32) (param $1 i32) (result i32) - i32.const 0 - drop local.get $0 local.get $1 i32.eq @@ -332,8 +314,6 @@ local.get $1 call $~lib/rt/stub/__retain local.set $1 - i32.const 0 - drop local.get $0 local.get $1 call $~lib/string/String.__eq diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index ff20519d71..c671a12303 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -189,8 +189,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -405,8 +403,6 @@ (local $42 i32) (local $43 i64) (local $44 i64) - i32.const 1 - drop block $~lib/util/math/pow_lut|inlined.0 (result f64) local.get $0 local.set $3 diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index d9b932327a..1fd979d04a 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -38,8 +38,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -294,8 +292,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -1334,8 +1330,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -1592,8 +1586,6 @@ block $std/pointer/Pointer#get:value|inlined.0 (result i32) global.get $std/pointer/one local.set $0 - i32.const 1 - drop local.get $0 br $std/pointer/Pointer#get:value|inlined.0 end @@ -1602,8 +1594,6 @@ block $std/pointer/Pointer#get:value|inlined.1 (result i32) global.get $std/pointer/one local.set $1 - i32.const 1 - drop local.get $1 br $std/pointer/Pointer#get:value|inlined.1 end @@ -1877,16 +1867,10 @@ block $std/pointer/Pointer#get:value|inlined.6 (result i32) global.get $std/pointer/two local.set $0 - i32.const 1 - drop local.get $0 br $std/pointer/Pointer#get:value|inlined.6 end local.set $6 - i32.const 1 - drop - i32.const 0 - drop local.get $6 i32.const 0 i32.eq @@ -2168,8 +2152,6 @@ local.set $0 f32.const 1.399999976158142 local.set $8 - i32.const 0 - drop local.get $0 local.get $8 f32.store diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index e527d74d29..b10c556315 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -10,34 +10,14 @@ (export "memory" (memory $0)) (start $start) (func $~lib/polyfills/bswap (; 1 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 return ) (func $~lib/polyfills/bswap (; 2 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 return ) (func $~lib/polyfills/bswap (; 3 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -52,10 +32,6 @@ return ) (func $~lib/polyfills/bswap (; 4 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -72,12 +48,6 @@ return ) (func $~lib/polyfills/bswap (; 5 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -92,12 +62,6 @@ return ) (func $~lib/polyfills/bswap (; 6 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -115,14 +79,6 @@ (local $1 i64) (local $2 i64) (local $3 i64) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i64.const 8 i64.shr_u @@ -162,14 +118,6 @@ (local $1 i64) (local $2 i64) (local $3 i64) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i64.const 8 i64.shr_u @@ -206,12 +154,6 @@ return ) (func $~lib/polyfills/bswap (; 9 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -226,12 +168,6 @@ return ) (func $~lib/polyfills/bswap (; 10 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const -16711936 i32.and @@ -246,30 +182,14 @@ return ) (func $~lib/polyfills/bswap16 (; 11 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 return ) (func $~lib/polyfills/bswap16 (; 12 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 return ) (func $~lib/polyfills/bswap16 (; 13 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -284,10 +204,6 @@ return ) (func $~lib/polyfills/bswap16 (; 14 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -304,12 +220,6 @@ return ) (func $~lib/polyfills/bswap16 (; 15 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl @@ -328,12 +238,6 @@ return ) (func $~lib/polyfills/bswap16 (; 16 ;) (param $0 i32) (result i32) - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 8 i32.shl diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index d00bc726de..89a6ec2c22 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -66,8 +66,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -86,8 +84,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -140,8 +136,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -281,8 +275,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -296,8 +288,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -391,8 +381,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -449,8 +437,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -470,8 +456,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -526,8 +510,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -638,8 +620,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -677,8 +657,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -710,8 +688,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1023,8 +999,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1097,8 +1071,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1203,8 +1175,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1532,8 +1502,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1625,8 +1593,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1650,13 +1616,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1673,8 +1635,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1694,8 +1654,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1708,8 +1666,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1738,8 +1694,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1785,12 +1739,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -1833,8 +1783,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2138,8 +2086,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3178,8 +3124,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3438,8 +3382,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3450,8 +3392,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3500,12 +3440,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3547,8 +3483,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3749,14 +3683,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -3841,14 +3767,6 @@ local.get $10 i32.load8_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 @@ -3937,14 +3855,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -4144,8 +4054,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -4271,8 +4179,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -4372,8 +4278,6 @@ end ) (func $~lib/array/Array#__unchecked_set (; 46 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -4510,8 +4414,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 52 ;) (param $0 i32) (param $1 i32) (result i32) @@ -4524,14 +4426,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -4548,8 +4442,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -5081,14 +4973,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -5171,14 +5055,6 @@ local.get $10 i32.load8_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash8 br $~lib/util/hash/HASH|inlined.2 @@ -5267,14 +5143,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -5388,8 +5256,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -5526,8 +5392,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 68 ;) (param $0 i32) (param $1 i32) (result i32) @@ -5540,14 +5404,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -5562,8 +5418,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -6111,16 +5965,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -6205,16 +6049,6 @@ local.get $10 i32.load16_s local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 @@ -6303,16 +6137,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -6428,8 +6252,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -6566,8 +6388,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 85 ;) (param $0 i32) (param $1 i32) (result i32) @@ -6580,16 +6400,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -6606,8 +6416,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -7139,16 +6947,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -7231,16 +7029,6 @@ local.get $10 i32.load16_u local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash16 br $~lib/util/hash/HASH|inlined.2 @@ -7329,16 +7117,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -7452,8 +7230,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 95 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -7590,8 +7366,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 101 ;) (param $0 i32) (param $1 i32) (result i32) @@ -7604,16 +7378,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -7628,8 +7392,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -8193,18 +7955,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -8285,18 +8035,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -8385,18 +8123,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -8508,8 +8234,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 112 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -8646,8 +8370,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 118 ;) (param $0 i32) (param $1 i32) (result i32) @@ -8660,18 +8382,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -8684,8 +8394,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -9195,18 +8903,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -9287,18 +8983,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -9387,18 +9071,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -9510,8 +9182,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 128 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -9648,8 +9318,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 134 ;) (param $0 i32) (param $1 i32) (result i32) @@ -9662,18 +9330,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -9686,8 +9342,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -10285,20 +9939,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -10380,20 +10020,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -10483,20 +10109,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -10608,8 +10220,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 145 ;) (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -10746,8 +10356,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 151 ;) (param $0 i32) (param $1 i64) (result i32) @@ -10761,20 +10369,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -10787,8 +10381,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -11299,20 +10891,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.0 @@ -11394,20 +10972,6 @@ local.get $10 i64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.2 @@ -11497,20 +11061,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.1 @@ -11622,8 +11172,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 161 ;) (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -11760,8 +11308,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 167 ;) (param $0 i32) (param $1 i64) (result i32) @@ -11775,20 +11321,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash64 br $~lib/util/hash/HASH|inlined.3 @@ -11801,8 +11333,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -12313,14 +11843,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -12403,14 +11925,6 @@ local.get $10 f32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $12 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -12501,14 +12015,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -12621,8 +12127,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 177 ;) (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -12759,8 +12263,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 183 ;) (param $0 i32) (param $1 f32) (result i32) @@ -12774,14 +12276,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.reinterpret_f32 call $~lib/util/hash/hash32 @@ -12795,8 +12289,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=4 @@ -13307,16 +12799,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -13399,16 +12881,6 @@ local.get $10 f64.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -13499,16 +12971,6 @@ block $~lib/util/hash/HASH|inlined.1 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -13621,8 +13083,6 @@ local.get $0 ) (func $~lib/array/Array#__unchecked_set (; 193 ;) (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -13759,8 +13219,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/set/Set#delete (; 199 ;) (param $0 i32) (param $1 f64) (result i32) @@ -13774,16 +13232,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 i64.reinterpret_f64 call $~lib/util/hash/hash64 @@ -13797,8 +13245,6 @@ i32.const 0 return end - i32.const 0 - drop local.get $3 local.get $3 i32.load offset=8 @@ -14245,8 +13691,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -14317,8 +13761,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -14340,15 +13782,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 205 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 206 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14359,15 +13798,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 207 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 208 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14378,15 +13814,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 209 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 210 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14397,15 +13830,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 211 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 212 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14416,15 +13846,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 213 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 214 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14435,15 +13862,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 215 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 216 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14454,15 +13878,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 217 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 218 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14473,15 +13894,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 219 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 220 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14492,15 +13910,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 221 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/set/Set#__visit_impl (; 222 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -14511,15 +13926,12 @@ local.get $0 i32.load offset=8 local.set $2 - i32.const 0 - drop local.get $2 local.get $1 call $~lib/rt/pure/__visit ) (func $~lib/array/Array#__visit_impl (; 223 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/__visit_members (; 224 ;) (param $0 i32) (param $1 i32) (local $2 i32) diff --git a/tests/compiler/std/simd.untouched.wat b/tests/compiler/std/simd.untouched.wat index a381ad0403..237ebf5846 100644 --- a/tests/compiler/std/simd.untouched.wat +++ b/tests/compiler/std/simd.untouched.wat @@ -1,15 +1,6 @@ (module - (type $none_=>_none (func)) (memory $0 0) (table $0 1 funcref) (global $~lib/ASC_FEATURE_SIMD i32 (i32.const 0)) (export "memory" (memory $0)) - (start $start) - (func $start:std/simd (; 0 ;) - i32.const 0 - drop - ) - (func $start (; 1 ;) - call $start:std/simd - ) ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 18058e4195..16a68f40f0 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -68,8 +68,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/rt/stub/maybeGrowMemory (; 4 ;) (param $0 i32) @@ -168,8 +166,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -186,8 +182,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -1226,8 +1220,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -1463,8 +1455,6 @@ local.get $2 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 1 @@ -1569,8 +1559,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -1887,8 +1875,6 @@ end ) (func $~lib/array/Array#__unchecked_set (; 12 ;) (param $0 i32) (param $1 i32) (param $2 i32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -1963,13 +1949,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 17 ;) (param $0 i32) (param $1 i32) (param $2 i64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -2044,13 +2026,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 22 ;) (param $0 i32) (param $1 i32) (param $2 f32) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 @@ -2125,13 +2103,9 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $~lib/array/Array#__unchecked_set (; 27 ;) (param $0 i32) (param $1 i32) (param $2 f64) - i32.const 0 - drop local.get $0 i32.load offset=4 local.get $1 diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index a9d5cd6b17..e1cc932247 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -75,12 +75,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -122,8 +118,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -142,8 +136,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -196,8 +188,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -337,8 +327,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -352,8 +340,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -447,8 +433,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -505,8 +489,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -526,8 +508,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -582,8 +562,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -712,8 +690,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -750,8 +726,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -789,8 +763,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -822,8 +794,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1135,8 +1105,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1209,8 +1177,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1613,8 +1579,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1706,8 +1670,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 22 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1731,13 +1693,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1754,8 +1712,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1775,8 +1731,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1789,8 +1743,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1819,8 +1771,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1843,8 +1793,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2883,8 +2831,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3143,8 +3089,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3155,8 +3099,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3205,12 +3147,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3252,8 +3190,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3623,8 +3559,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -4137,8 +4071,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -4264,8 +4196,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -5601,8 +5531,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -5673,8 +5601,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index b68c64f6ef..13b63d8d1a 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -552,12 +552,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -599,8 +595,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -619,8 +613,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -673,8 +665,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -814,8 +804,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -829,8 +817,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -924,8 +910,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -982,8 +966,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -1003,8 +985,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -1059,8 +1039,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -1189,8 +1167,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1227,8 +1203,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -1266,8 +1240,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -1299,8 +1271,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1612,8 +1582,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1686,8 +1654,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -2090,8 +2056,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -2183,8 +2147,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -2208,13 +2170,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -2231,8 +2189,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -2252,8 +2208,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -2266,8 +2220,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -2296,8 +2248,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -2320,8 +2270,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3360,8 +3308,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3620,8 +3566,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3632,8 +3576,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3682,12 +3624,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3729,8 +3667,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -3826,8 +3762,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -5043,8 +4977,6 @@ local.get $2 i32.eqz if - i32.const 1 - drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5088,8 +5020,6 @@ local.tee $2 i32.eqz if - i32.const 1 - drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5116,8 +5046,6 @@ local.tee $2 i32.eqz if - i32.const 1 - drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5228,8 +5156,6 @@ i32.gt_s end if - i32.const 1 - drop f64.const nan:0x8000000000000 local.set $3 local.get $0 @@ -5354,8 +5280,6 @@ local.get $2 i32.eqz if - i32.const 0 - drop i32.const 0 local.set $3 local.get $0 @@ -5399,8 +5323,6 @@ local.tee $2 i32.eqz if - i32.const 0 - drop i32.const 0 local.set $3 local.get $0 @@ -5427,8 +5349,6 @@ local.tee $2 i32.eqz if - i32.const 0 - drop i32.const 0 local.set $3 local.get $0 @@ -5539,8 +5459,6 @@ i32.gt_s end if - i32.const 0 - drop i32.const 0 local.set $3 local.get $0 @@ -5664,8 +5582,6 @@ local.get $2 i32.eqz if - i32.const 0 - drop i64.const 0 local.set $3 local.get $0 @@ -5709,8 +5625,6 @@ local.tee $2 i32.eqz if - i32.const 0 - drop i64.const 0 local.set $3 local.get $0 @@ -5737,8 +5651,6 @@ local.tee $2 i32.eqz if - i32.const 0 - drop i64.const 0 local.set $3 local.get $0 @@ -5849,8 +5761,6 @@ i32.gt_s end if - i32.const 0 - drop i64.const 0 local.set $3 local.get $0 @@ -5965,8 +5875,6 @@ (local $4 i32) i32.const 1 local.set $2 - i32.const 1 - drop local.get $1 i32.const 0 i32.lt_s @@ -7777,8 +7685,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -7904,8 +7810,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -8632,8 +8536,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -8964,8 +8866,6 @@ local.get $3 i32.const 2 call $~lib/array/ensureSize - i32.const 1 - drop local.get $0 i32.load offset=4 local.get $2 @@ -9117,8 +9017,6 @@ i32.add local.get $9 i32.store - i32.const 1 - drop local.get $9 call $~lib/rt/pure/__retain drop @@ -9324,10 +9222,6 @@ local.get $1 call $~lib/array/Array<~lib/string/String>#__unchecked_get local.set $2 - i32.const 1 - drop - i32.const 1 - drop local.get $2 i32.eqz if @@ -9593,8 +9487,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -9635,8 +9527,6 @@ local.set $4 local.get $1 local.set $3 - i32.const 0 - drop local.get $5 local.get $4 local.get $3 @@ -9882,8 +9772,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -9904,8 +9792,6 @@ local.set $7 local.get $3 local.set $4 - i32.const 0 - drop local.get $5 local.get $7 local.get $4 @@ -9966,8 +9852,6 @@ local.set $6 local.get $4 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -9990,8 +9874,6 @@ local.set $8 local.get $4 local.set $5 - i32.const 0 - drop local.get $6 local.get $8 local.get $5 @@ -10750,8 +10632,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -10824,8 +10704,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -11624,8 +11502,6 @@ block $~lib/util/string/toUpper8|inlined.0 (result i32) local.get $8 local.set $9 - i32.const 0 - drop global.get $~lib/util/string/upperTable127Ptr local.get $9 i32.add @@ -11966,8 +11842,6 @@ block $~lib/util/string/toLower8|inlined.0 (result i32) local.get $6 local.set $7 - i32.const 0 - drop global.get $~lib/util/string/lowerTable127Ptr local.get $7 i32.add @@ -21012,8 +20886,7 @@ call $start:std/string ) (func $~lib/array/Array#__visit_impl (; 109 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 110 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -21063,8 +20936,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -21135,8 +21006,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if @@ -21154,8 +21023,6 @@ (local $3 i32) (local $4 i32) (local $5 i32) - i32.const 1 - drop local.get $0 i32.load offset=4 local.set $2 @@ -21191,28 +21058,22 @@ end ) (func $~lib/array/Array#__visit_impl (; 112 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 113 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 114 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 115 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 116 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 117 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/__visit_members (; 118 ;) (param $0 i32) (param $1 i32) (local $2 i32) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 75e37ef76d..5d3af8d39b 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -183,8 +183,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 @@ -211,8 +209,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -714,8 +710,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -958,8 +952,6 @@ local.get $1 call $~lib/rt/stub/__retain local.set $2 - i32.const 1 - drop local.get $2 call $~lib/util/hash/hashStr local.set $3 @@ -989,8 +981,6 @@ local.get $1 call $~lib/rt/stub/__retain local.set $2 - i32.const 1 - drop local.get $2 call $~lib/util/hash/hashStr local.set $3 @@ -1097,8 +1087,6 @@ i32.load call $~lib/rt/stub/__retain local.set $12 - i32.const 1 - drop local.get $12 call $~lib/util/hash/hashStr local.set $13 @@ -1196,8 +1184,6 @@ local.get $1 call $~lib/rt/stub/__retain local.set $3 - i32.const 1 - drop local.get $3 call $~lib/util/hash/hashStr local.set $4 @@ -1214,8 +1200,6 @@ local.set $6 local.get $6 if - i32.const 0 - drop local.get $6 local.get $2 i32.store offset=4 @@ -1468,18 +1452,6 @@ local.get $10 i32.load local.set $12 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $12 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.1 @@ -1572,18 +1544,6 @@ block $~lib/util/hash/HASH|inlined.0 (result i32) local.get $1 local.set $3 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $3 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.0 @@ -1596,8 +1556,6 @@ local.set $5 local.get $5 if - i32.const 1 - drop local.get $5 i32.load offset=4 local.set $3 @@ -1766,18 +1724,6 @@ block $~lib/util/hash/HASH|inlined.2 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.2 @@ -1794,18 +1740,6 @@ block $~lib/util/hash/HASH|inlined.3 (result i32) local.get $1 local.set $2 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/hash/hash32 br $~lib/util/hash/HASH|inlined.3 @@ -1851,8 +1785,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -2891,8 +2823,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index be0375534f..3672ad4cd5 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -247,8 +247,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -267,8 +265,6 @@ i32.xor i32.and local.set $3 - i32.const 1 - drop local.get $3 i32.const 16 i32.ge_u @@ -321,8 +317,6 @@ i32.sub local.set $4 end - i32.const 1 - drop local.get $4 i32.const 23 i32.lt_u @@ -462,8 +456,6 @@ (local $11 i32) (local $12 i32) (local $13 i32) - i32.const 1 - drop local.get $1 i32.eqz if @@ -477,8 +469,6 @@ local.get $1 i32.load local.set $2 - i32.const 1 - drop local.get $2 i32.const 1 i32.and @@ -572,8 +562,6 @@ local.get $6 i32.load local.set $3 - i32.const 1 - drop local.get $3 i32.const 1 i32.and @@ -630,8 +618,6 @@ i32.xor i32.and local.set $8 - i32.const 1 - drop local.get $8 i32.const 16 i32.ge_u @@ -651,8 +637,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $1 i32.const 16 i32.add @@ -707,8 +691,6 @@ i32.sub local.set $9 end - i32.const 1 - drop local.get $9 i32.const 23 i32.lt_u @@ -819,8 +801,6 @@ (local $7 i32) (local $8 i32) (local $9 i32) - i32.const 1 - drop local.get $1 local.get $2 i32.le_u @@ -858,8 +838,6 @@ local.set $5 local.get $4 if - i32.const 1 - drop local.get $1 local.get $4 i32.const 16 @@ -891,8 +869,6 @@ nop end else - i32.const 1 - drop local.get $1 local.get $0 i32.const 1572 @@ -1204,8 +1180,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 23 i32.lt_u @@ -1278,8 +1252,6 @@ i32.add i32.load offset=4 local.set $6 - i32.const 1 - drop local.get $6 i32.eqz if @@ -1384,8 +1356,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree ) @@ -1713,8 +1683,6 @@ local.get $1 i32.load local.set $3 - i32.const 1 - drop local.get $2 i32.const 15 i32.and @@ -1806,8 +1774,6 @@ (func $~lib/rt/tlsf/allocateBlock (; 20 ;) (param $0 i32) (param $1 i32) (result i32) (local $2 i32) (local $3 i32) - i32.const 1 - drop global.get $~lib/rt/tlsf/collectLock i32.eqz i32.eqz @@ -1831,13 +1797,9 @@ if global.get $~lib/gc/gc.auto if - i32.const 1 - drop i32.const 1 global.set $~lib/rt/tlsf/collectLock call $~lib/rt/pure/__collect - i32.const 1 - drop i32.const 0 global.set $~lib/rt/tlsf/collectLock local.get $0 @@ -1854,8 +1816,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1875,8 +1835,6 @@ local.get $2 call $~lib/rt/tlsf/searchBlock local.set $3 - i32.const 1 - drop local.get $3 i32.eqz if @@ -1889,8 +1847,6 @@ end end end - i32.const 1 - drop local.get $3 i32.load i32.const -4 @@ -1919,8 +1875,6 @@ local.get $3 local.get $2 call $~lib/rt/tlsf/prepareBlock - i32.const 1 - drop local.get $3 call $~lib/rt/rtrace/onalloc local.get $3 @@ -1953,8 +1907,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.eqz if @@ -2232,12 +2184,8 @@ i32.const 1 i32.add i32.store offset=4 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/onincrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -2295,8 +2243,6 @@ (local $4 i32) (local $5 i32) (local $6 i32) - i32.const 0 - drop loop $while-continue|0 local.get $2 if (result i32) @@ -3335,8 +3281,6 @@ if br $~lib/util/memory/memmove|inlined.0 end - i32.const 1 - drop local.get $4 local.get $3 i32.add @@ -3595,8 +3539,6 @@ i32.const 0 call $~lib/rt/tlsf/__alloc local.set $5 - i32.const 1 - drop local.get $5 i32.const 16 i32.sub @@ -3607,8 +3549,6 @@ call $~lib/memory/memory.copy local.get $0 if - i32.const 1 - drop local.get $0 i32.const 16 i32.sub @@ -3657,12 +3597,8 @@ i32.const 268435455 i32.and local.set $2 - i32.const 1 - drop local.get $0 call $~lib/rt/rtrace/ondecrement - i32.const 1 - drop local.get $0 i32.load i32.const 1 @@ -3704,8 +3640,6 @@ i32.store offset=4 end else - i32.const 1 - drop local.get $2 i32.const 0 i32.gt_u @@ -5341,8 +5275,6 @@ local.set $9 local.get $2 local.set $8 - i32.const 0 - drop local.get $9 i32.const 256 i32.lt_s @@ -5403,12 +5335,6 @@ unreachable end block $~lib/util/sort/COMPARATOR|inlined.0 (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop i32.const 1 br $~lib/util/sort/COMPARATOR|inlined.0 end @@ -5586,8 +5512,6 @@ select end local.set $4 - i32.const 1 - drop local.get $5 local.get $4 i32.lt_s @@ -5691,8 +5615,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/typedarray/isInt8ArrayEqual (; 78 ;) (param $0 i32) (param $1 i32) (result i32) @@ -5946,8 +5868,6 @@ select end local.set $4 - i32.const 0 - drop loop $for-loop|0 local.get $5 local.get $4 @@ -6002,8 +5922,6 @@ local.get $1 call $~lib/array/Array#__unchecked_get local.set $2 - i32.const 0 - drop local.get $2 ) (func $std/typedarray/isInt32ArrayEqual (; 84 ;) (param $0 i32) (param $1 i32) (result i32) @@ -11097,8 +11015,6 @@ local.get $1 i32.load local.set $4 - i32.const 1 - drop local.get $4 i32.const 1 i32.and @@ -11224,8 +11140,6 @@ local.get $0 local.get $1 call $~lib/rt/tlsf/insertBlock - i32.const 1 - drop local.get $1 call $~lib/rt/rtrace/onfree end @@ -32066,8 +31980,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 1 - drop local.get $3 local.set $6 local.get $5 @@ -32179,8 +32091,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 1 - drop local.get $3 local.set $6 local.get $5 @@ -32525,8 +32435,6 @@ local.set $5 local.get $2 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -32541,12 +32449,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 481 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 24 i32.shl @@ -32590,8 +32492,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -32607,8 +32507,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 24 i32.shl @@ -32628,8 +32526,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -32933,8 +32829,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -33141,8 +33035,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int8Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Int8Array#join @@ -33208,8 +33100,6 @@ local.set $4 local.get $1 local.set $3 - i32.const 0 - drop local.get $5 local.get $4 local.get $3 @@ -33218,12 +33108,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 492 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 255 i32.and @@ -33254,10 +33138,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 255 i32.and @@ -33271,8 +33151,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -33474,8 +33352,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint8Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint8Array#join @@ -33566,8 +33442,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint8ClampedArray#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint8ClampedArray#join @@ -33607,12 +33481,6 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 501 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 i32.const 16 i32.shl @@ -33648,8 +33516,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -33665,8 +33531,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 i32.const 16 i32.shl @@ -33686,8 +33550,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -33895,8 +33757,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int16Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Int16Array#join @@ -33936,12 +33796,6 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 507 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 i32.const 65535 i32.and @@ -33972,10 +33826,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 i32.const 65535 i32.and @@ -33989,8 +33839,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -34192,8 +34040,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint16Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint16Array#join @@ -34233,12 +34079,6 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 513 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/itoa32 return @@ -34266,8 +34106,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i32.const 0 i32.lt_s @@ -34279,8 +34117,6 @@ i32.sub local.set $2 end - i32.const 1 - drop local.get $2 call $~lib/util/number/decimalCount32 local.get $4 @@ -34292,8 +34128,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -34501,8 +34335,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Int32Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Int32Array#join @@ -34542,12 +34374,6 @@ call $~lib/rt/pure/__release ) (func $~lib/util/number/itoa (; 519 ;) (param $0 i32) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $0 call $~lib/util/number/utoa32 return @@ -34574,10 +34400,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 1 - drop local.get $2 call $~lib/util/number/decimalCount32 local.set $3 @@ -34587,8 +34409,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -34790,8 +34610,6 @@ i32.const 4 i32.const 5 call $~lib/typedarray/Uint32Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint32Array#join @@ -35082,8 +34900,6 @@ local.set $6 local.get $4 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -35106,8 +34922,6 @@ local.set $8 local.get $4 local.set $5 - i32.const 0 - drop local.get $6 local.get $8 local.get $5 @@ -35123,12 +34937,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 528 ;) (param $0 i64) (result i32) - i32.const 0 - drop - i32.const 1 - drop - i32.const 0 - drop local.get $0 call $~lib/util/number/itoa64 return @@ -35160,8 +34968,6 @@ end i32.const 0 local.set $3 - i32.const 1 - drop local.get $2 i64.const 0 i64.lt_s @@ -35173,8 +34979,6 @@ i64.sub local.set $2 end - i32.const 0 - drop local.get $2 i64.const 4294967295 i64.le_u @@ -35193,8 +34997,6 @@ local.set $7 local.get $3 local.set $6 - i32.const 0 - drop local.get $8 local.get $7 local.get $6 @@ -35211,8 +35013,6 @@ local.set $9 local.get $3 local.set $6 - i32.const 0 - drop local.get $7 local.get $9 local.get $6 @@ -35421,8 +35221,6 @@ i32.const 4 i64.const 5 call $~lib/typedarray/Int64Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Int64Array#join @@ -35499,8 +35297,6 @@ local.set $5 local.get $3 local.set $4 - i32.const 0 - drop local.get $6 local.get $5 local.get $4 @@ -35521,8 +35317,6 @@ local.set $7 local.get $3 local.set $4 - i32.const 0 - drop local.get $5 local.get $7 local.get $4 @@ -35532,12 +35326,6 @@ call $~lib/rt/pure/__retain ) (func $~lib/util/number/itoa (; 535 ;) (param $0 i64) (result i32) - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $0 call $~lib/util/number/utoa64 return @@ -35568,10 +35356,6 @@ end i32.const 0 local.set $3 - i32.const 0 - drop - i32.const 0 - drop local.get $2 i64.const 4294967295 i64.le_u @@ -35588,8 +35372,6 @@ local.set $6 local.get $3 local.set $5 - i32.const 0 - drop local.get $7 local.get $6 local.get $5 @@ -35604,8 +35386,6 @@ local.set $8 local.get $3 local.set $5 - i32.const 0 - drop local.get $6 local.get $8 local.get $5 @@ -35808,8 +35588,6 @@ i32.const 4 i64.const 5 call $~lib/typedarray/Uint64Array#__set - i32.const 0 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Uint64Array#join @@ -36592,8 +36370,6 @@ local.set $9 local.get $7 local.set $8 - i32.const 0 - drop local.get $10 local.get $9 local.get $8 @@ -36666,8 +36442,6 @@ local.set $6 local.get $5 local.set $10 - i32.const 0 - drop local.get $11 local.get $6 local.get $10 @@ -37449,8 +37223,6 @@ i32.const 4 f32.const 5 call $~lib/typedarray/Float32Array#__set - i32.const 1 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Float32Array#join @@ -37684,8 +37456,6 @@ i32.const 4 f64.const 5 call $~lib/typedarray/Float64Array#__set - i32.const 1 - drop local.get $1 i32.const 2464 call $~lib/typedarray/Float64Array#join @@ -38016,8 +37786,6 @@ i32.const 0 local.set $7 i32.const 1 - drop - i32.const 1 global.set $~argumentsLength local.get $6 i32.const 0 @@ -38271,10 +38039,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -38529,12 +38293,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -38791,14 +38549,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -39053,16 +38803,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -39315,18 +39055,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -39579,20 +39307,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -39846,22 +39560,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -40115,24 +39813,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -40386,26 +40066,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -40659,28 +40319,6 @@ local.set $6 i32.const 0 local.set $7 - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop i32.const 1 global.set $~argumentsLength local.get $6 @@ -40755,8 +40393,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -40791,8 +40427,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -40815,12 +40449,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -40955,8 +40583,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -40991,8 +40617,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41015,10 +40639,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -41077,8 +40697,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41113,8 +40731,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41137,12 +40753,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -41194,8 +40804,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41230,8 +40838,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41254,10 +40860,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -41311,8 +40913,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41347,8 +40947,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41387,8 +40985,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41423,8 +41019,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41447,12 +41041,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -41494,8 +41082,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41530,8 +41116,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41658,8 +41242,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int8Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -41687,8 +41269,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int8Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 0 @@ -41737,8 +41317,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41773,8 +41351,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -41797,12 +41373,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -41946,8 +41516,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -41982,8 +41550,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42006,10 +41572,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -42068,8 +41630,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42104,8 +41664,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42128,12 +41686,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -42181,8 +41733,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42217,8 +41767,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42241,10 +41789,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -42298,8 +41842,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42334,8 +41876,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42374,8 +41914,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42410,8 +41948,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42434,12 +41970,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 0 @@ -42481,8 +42011,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42517,8 +42045,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42645,8 +42171,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -42674,8 +42198,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint8Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 0 @@ -42725,8 +42247,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42761,8 +42281,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42785,10 +42303,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 2 @@ -42796,10 +42310,6 @@ i32.add i32.load local.set $11 - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -42937,8 +42447,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -42973,8 +42481,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -42997,10 +42503,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -43064,8 +42566,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43100,8 +42600,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43124,10 +42622,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 3 @@ -43135,10 +42629,6 @@ i32.add i64.load local.set $11 - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -43197,8 +42687,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43233,8 +42721,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43257,10 +42743,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -43318,8 +42800,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43354,8 +42834,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43395,8 +42873,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43431,8 +42907,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43455,10 +42929,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 1 @@ -43466,10 +42936,6 @@ i32.add i32.load16_s local.set $11 - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -43524,8 +42990,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43560,8 +43024,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43584,10 +43046,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 0 @@ -43595,10 +43053,6 @@ i32.add i32.load8_s local.set $11 - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -43740,8 +43194,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint8ClampedArray> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -43769,8 +43221,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint8ClampedArray#set<~lib/array/Array> - i32.const 1 - drop local.get $4 i32.const 10 i32.const 0 @@ -43819,8 +43269,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -43855,8 +43303,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -43879,12 +43325,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -44019,8 +43459,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44055,8 +43493,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44079,10 +43515,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -44141,8 +43573,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44177,8 +43607,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44201,12 +43629,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -44254,8 +43676,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44290,8 +43710,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44314,10 +43732,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -44376,8 +43790,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44412,8 +43824,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44436,12 +43846,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -44483,8 +43887,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44519,8 +43921,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44559,8 +43959,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44595,8 +43993,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44619,12 +44015,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -44759,8 +44149,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int16Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -44788,8 +44176,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int16Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 1 @@ -44838,8 +44224,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -44874,8 +44258,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -44898,12 +44280,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -45047,8 +44423,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45083,8 +44457,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45107,10 +44479,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -45169,8 +44537,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45205,8 +44571,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45229,12 +44593,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -45282,8 +44640,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45318,8 +44674,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45342,10 +44696,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -45404,8 +44754,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45440,8 +44788,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45464,12 +44810,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -45511,8 +44851,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45547,8 +44885,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45587,8 +44923,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45623,8 +44957,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -45647,12 +44979,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 1 @@ -45787,8 +45113,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint16Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -45816,8 +45140,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint16Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 1 @@ -45861,8 +45183,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -45897,8 +45217,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46021,8 +45339,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46057,8 +45373,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46081,10 +45395,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -46143,8 +45453,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46179,8 +45487,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46203,12 +45509,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -46256,8 +45556,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46292,8 +45590,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46316,10 +45612,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -46378,8 +45670,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46414,8 +45704,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46438,12 +45726,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -46490,8 +45772,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46526,8 +45806,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46550,12 +45828,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -46602,8 +45874,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46638,8 +45908,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -46662,12 +45930,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -46802,8 +46064,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int32Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -46831,8 +46091,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int32Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 2 @@ -46876,8 +46134,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -46912,8 +46168,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47049,8 +46303,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47085,8 +46337,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47109,10 +46359,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -47171,8 +46417,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47207,8 +46451,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47231,12 +46473,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -47284,8 +46520,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47320,8 +46554,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47344,10 +46576,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -47406,8 +46634,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47442,8 +46668,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47466,12 +46690,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -47518,8 +46736,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47554,8 +46770,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47578,12 +46792,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -47630,8 +46838,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47666,8 +46872,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47690,12 +46894,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 2 @@ -47830,8 +47028,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint32Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -47859,8 +47055,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint32Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 2 @@ -47909,8 +47103,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -47945,8 +47137,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -47969,12 +47159,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -48118,8 +47302,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48154,8 +47336,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48178,10 +47358,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -48235,8 +47411,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48271,8 +47445,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48312,8 +47484,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48348,8 +47518,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48372,10 +47540,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -48434,8 +47598,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48470,8 +47632,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48494,12 +47654,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -48546,8 +47700,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48582,8 +47734,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48606,12 +47756,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -48658,8 +47802,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48694,8 +47836,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48718,12 +47858,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -48858,8 +47992,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Int64Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -48887,8 +48019,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Int64Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 3 @@ -48937,8 +48067,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -48973,8 +48101,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -48997,12 +48123,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -49137,8 +48257,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49173,8 +48291,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49197,10 +48313,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -49254,8 +48366,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49290,8 +48400,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49331,8 +48439,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49367,8 +48473,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49391,10 +48495,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 3 @@ -49453,8 +48553,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49489,8 +48587,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49513,12 +48609,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -49565,8 +48655,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49601,8 +48689,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49625,12 +48711,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -49677,8 +48757,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49713,8 +48791,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -49737,12 +48813,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -49877,8 +48947,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Uint64Array> - i32.const 1 - drop local.get $4 global.get $std/typedarray/setSource3 i32.const 2 @@ -49906,8 +48974,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Uint64Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 3 @@ -49956,8 +49022,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -49992,8 +49056,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50016,12 +49078,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 2 @@ -50156,8 +49212,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50192,8 +49246,6 @@ call $~lib/builtins/abort unreachable end - i32.const 1 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50232,8 +49284,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50268,8 +49318,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50292,12 +49340,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 2 @@ -50345,8 +49387,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50381,8 +49421,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50405,12 +49443,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 2 @@ -50458,8 +49490,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50494,8 +49524,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50518,12 +49546,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 2 @@ -50571,8 +49593,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50607,8 +49627,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50631,12 +49649,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 2 @@ -50772,8 +49784,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float32Array> - i32.const 0 - drop local.get $4 local.get $1 i32.const 0 @@ -50786,8 +49796,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Float32Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 2 @@ -50836,8 +49844,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -50872,8 +49878,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -50896,12 +49900,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 3 @@ -51039,8 +50037,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51075,8 +50071,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51099,12 +50093,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 0 - drop local.get $6 local.get $9 i32.const 3 @@ -51152,8 +50140,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51188,8 +50174,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51212,12 +50196,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 3 @@ -51265,8 +50243,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51301,8 +50277,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51325,12 +50299,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 3 @@ -51378,8 +50346,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51414,8 +50380,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51438,12 +50402,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 3 @@ -51491,8 +50449,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51527,8 +50483,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51551,12 +50505,6 @@ local.set $10 local.get $10 if - i32.const 0 - drop - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 3 @@ -51692,8 +50640,6 @@ call $~lib/rt/pure/__retain local.tee $8 call $std/typedarray/valuesEqual<~lib/typedarray/Float64Array> - i32.const 0 - drop local.get $4 local.get $1 i32.const 0 @@ -51706,8 +50652,6 @@ global.get $std/typedarray/setSource7 i32.const 7 call $~lib/typedarray/Float64Array#set<~lib/array/Array> - i32.const 0 - drop local.get $4 i32.const 10 i32.const 3 @@ -51757,8 +50701,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51793,8 +50735,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51817,10 +50757,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 1 - drop local.get $7 local.get $9 i32.const 2 @@ -51884,8 +50820,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -51920,8 +50854,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -51944,10 +50876,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 2 @@ -51955,10 +50883,6 @@ i32.add i32.load local.set $11 - i32.const 0 - drop - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -52015,8 +50939,6 @@ local.set $4 local.get $2 local.set $3 - i32.const 0 - drop local.get $3 i32.const 0 i32.lt_s @@ -52051,8 +50973,6 @@ call $~lib/builtins/abort unreachable end - i32.const 0 - drop local.get $5 i32.load offset=4 local.get $3 @@ -52075,10 +50995,6 @@ local.set $10 local.get $10 if - i32.const 1 - drop - i32.const 0 - drop local.get $7 local.get $9 i32.const 2 @@ -52086,8 +51002,6 @@ i32.add i32.load local.set $11 - i32.const 1 - drop local.get $6 local.get $9 i32.const 0 @@ -54316,44 +53230,34 @@ call $start:std/typedarray ) (func $~lib/array/Array#__visit_impl (; 707 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 708 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 709 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 710 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 711 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 712 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 713 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 714 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 715 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/array/Array#__visit_impl (; 716 ;) (param $0 i32) (param $1 i32) - i32.const 0 - drop + nop ) (func $~lib/rt/pure/__visit (; 717 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -54403,8 +53307,6 @@ call $~lib/rt/pure/decrement br $break|0 end - i32.const 1 - drop local.get $2 i32.load offset=4 i32.const 268435455 @@ -54475,8 +53377,6 @@ call $~lib/rt/pure/collectWhite br $break|0 end - i32.const 1 - drop i32.const 0 i32.eqz if diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 7fbf280eb6..0ace79701f 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -72,8 +72,6 @@ i32.shl i32.add local.set $6 - i32.const 1 - drop local.get $4 i32.const 4 i32.ge_u @@ -343,8 +341,6 @@ local.get $6 local.get $5 i32.store - i32.const 1 - drop local.get $6 i32.const 1 i32.store offset=4 diff --git a/tests/compiler/wasi-snapshot.untouched.wat b/tests/compiler/wasi-snapshot.untouched.wat index 1ba0bd78ed..96de47fe13 100644 --- a/tests/compiler/wasi-snapshot.untouched.wat +++ b/tests/compiler/wasi-snapshot.untouched.wat @@ -10,12 +10,6 @@ (export "memory" (memory $0)) (start $start) (func $start:wasi-snapshot (; 0 ;) - i32.const 1 - drop - nop - i32.const 1 - drop - nop i32.const 9 global.set $wasi-snapshot/sig ) From 1c96c9f47470af77aa5d781fe95882d7ed0f3487 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 06:20:55 +0100 Subject: [PATCH 12/19] be careful nonetheless --- src/compiler.ts | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 4668802f63..40657afb5e 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -45,7 +45,8 @@ import { getLocalSetValue, getGlobalGetName, isGlobalMutable, - createType + createType, + hasSideEffects } from "./module"; import { @@ -1907,10 +1908,15 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - let condKind = evaluateBooleanConditionKind(condExpr); + let condKind = evaluateConditionKind(condExpr); // Shortcut if condition is always false if (condKind == ConditionKind.FALSE) { + if (hasSideEffects(condExpr)) { + bodyStmts.push( + module.drop(condExpr) + ); + } this.performAutoreleases(condFlow, bodyStmts); flow.inherit(bodyFlow); } else { @@ -2047,10 +2053,15 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - condKind = evaluateBooleanConditionKind(condExpr); + condKind = evaluateConditionKind(condExpr); // Shortcut if condition is always false (body never runs) if (condKind == ConditionKind.FALSE) { + if (hasSideEffects(condExpr)) { + stmts.push( + module.drop(condExpr) + ); + } this.performAutoreleases(condFlow, stmts); condFlow.freeScopedLocals(); flow.inherit(condFlow); @@ -2204,14 +2215,28 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - var condKind = evaluateBooleanConditionKind(condExpr); + var condKind = evaluateConditionKind(condExpr); // Shortcut if the condition is constant switch (condKind) { case ConditionKind.TRUE: { + if (hasSideEffects(condExpr)) { + return module.block(null, [ + module.drop(condExpr), + this.compileStatement(ifTrue) + ]); + } return this.compileStatement(ifTrue); } case ConditionKind.FALSE: { + if (hasSideEffects(condExpr)) { + return ifFalse + ? module.block(null, [ + module.drop(condExpr), + this.compileStatement(ifFalse) + ]) + : module.drop(condExpr); + } return ifFalse ? this.compileStatement(ifFalse) : module.nop(); @@ -2763,7 +2788,7 @@ export class Compiler extends DiagnosticEmitter { this.currentType ) ); - var condKind = evaluateBooleanConditionKind(condExpr); + var condKind = evaluateConditionKind(condExpr); // Shortcut if condition is always false (body never runs) if (condKind == ConditionKind.FALSE) { @@ -9452,7 +9477,7 @@ var mangleImportName_moduleName: string; var mangleImportName_elementName: string; /** Evaluates the kind of a boolean condition from its expression. */ -function evaluateBooleanConditionKind(expr: ExpressionRef): ConditionKind { +function evaluateConditionKind(expr: ExpressionRef): ConditionKind { assert(getExpressionType(expr) == NativeType.I32); if (getExpressionId(expr) == ExpressionId.Const) { return getConstValueI32(expr) From 5b05ba74f642394c16dcf574d7902e81dd945377 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 10:13:43 +0100 Subject: [PATCH 13/19] remove dead code, fix an ordering issue --- src/compiler.ts | 82 ++++++++++++++++--------------------------------- 1 file changed, 27 insertions(+), 55 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 40657afb5e..cf27aba958 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1272,7 +1272,7 @@ export class Compiler extends DiagnosticEmitter { ) ) ); - this.makeFieldInitialization(classInstance, stmts); + this.makeFieldInitializationInConstructor(classInstance, stmts); } this.performAutoreleases(flow, stmts); // `this` is excluded anyway this.finishAutoreleases(flow, stmts); @@ -5947,7 +5947,7 @@ export class Compiler extends DiagnosticEmitter { let stmts: ExpressionRef[] = [ module.local_set(thisLocal.index, theCall) ]; - this.makeFieldInitialization(classInstance, stmts); + this.makeFieldInitializationInConstructor(classInstance, stmts); // check that super had been called before accessing `this` if (flow.isAny( @@ -7343,7 +7343,7 @@ export class Compiler extends DiagnosticEmitter { ) ) ]; - this.makeFieldInitialization(classInstance, stmts); + this.makeFieldInitializationInConstructor(classInstance, stmts); stmts.push( module.local_get(thisLocal.index, nativeSizeType) ); @@ -8138,7 +8138,7 @@ export class Compiler extends DiagnosticEmitter { ) ); } - this.makeFieldInitialization(classInstance, stmts); + this.makeFieldInitializationInConstructor(classInstance, stmts); var body = this.performAutoreleasesWithValue(flow, module.local_get(0, nativeSizeType), classInstance.type, stmts); flow.freeScopedLocals(); this.currentFlow = previousFlow; @@ -9318,13 +9318,15 @@ export class Compiler extends DiagnosticEmitter { ], options.nativeSizeType); } - /** Makes the initializers for a class's fields. */ - makeFieldInitialization( + /** Makes the initializers for a class's fields within the constructor. */ + makeFieldInitializationInConstructor( + /** Class being initialized. */ classInstance: Class, + /** Statements to append to also being returned. Created if omitted. */ stmts: ExpressionRef[] = [] ): ExpressionRef[] { var members = classInstance.members; - if (!members) return []; + if (!members) return stmts; var module = this.module; var flow = this.currentFlow; @@ -9340,21 +9342,17 @@ export class Compiler extends DiagnosticEmitter { member.parent != classInstance // inherited field ) continue; - let field = member; assert(!field.isAny(CommonFlags.CONST)); + let field = member; + assert(!field.isAny(CommonFlags.CONST)); let fieldType = field.type; let nativeFieldType = fieldType.toNativeType(); let fieldPrototype = field.prototype; let initializerNode = fieldPrototype.initializerNode; let parameterIndex = fieldPrototype.parameterIndex; let initExpr: ExpressionRef; - if (initializerNode) { // use initializer - initExpr = this.compileExpression(initializerNode, fieldType, // reports - Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN - ); - if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) { - initExpr = this.makeRetain(initExpr); - } - } else if (parameterIndex >= 0) { // initialized via parameter (here: a local) + + // if declared as a constructor parameter, use its value + if (parameterIndex >= 0) { initExpr = module.local_get( isInline ? assert(flow.lookupLocal(field.name)).index @@ -9362,9 +9360,21 @@ export class Compiler extends DiagnosticEmitter { nativeFieldType ); if (fieldType.isManaged) initExpr = this.makeRetain(initExpr); - } else { // initialize with zero + + // fall back to use initializer if present + } else if (initializerNode) { + initExpr = this.compileExpression(initializerNode, fieldType, + Constraints.CONV_IMPLICIT | Constraints.WILL_RETAIN + ); + if (fieldType.isManaged && !this.skippedAutoreleases.has(initExpr)) { + initExpr = this.makeRetain(initExpr); + } + + // otherwise initialize with zero + } else { initExpr = this.makeZero(fieldType); } + stmts.push( module.store(fieldType.byteSize, module.local_get(thisLocalIndex, nativeSizeType), @@ -9376,44 +9386,6 @@ export class Compiler extends DiagnosticEmitter { } return stmts; } - - makeInstanceOfClass( - expr: ExpressionRef, - classInstance: Class - ): ExpressionRef { - var module = this.module; - var flow = this.currentFlow; - var idTemp = flow.getTempLocal(Type.i32); - var idExpr = module.load(4, false, - module.binary(BinaryOp.SubI32, - expr, - module.i32(this.program.runtimeHeaderSize) - ), - NativeType.I32 - ); - var label = "instanceof_" + classInstance.name + "|" + flow.pushBreakLabel(); - var conditions: ExpressionRef[] = []; - conditions.push( - module.drop( // br_if returns the value too - module.br(label, - module.binary(BinaryOp.EqI32, // classId == class.id - module.local_tee(idTemp.index, idExpr), - module.i32(classInstance.id) - ), - module.i32(1) // ? true - ) - ) - ); - // TODO: insert conditions for all possible subclasses (i.e. cat is also animal) - // TODO: simplify if there are none - conditions.push( - module.i32(0) // : false - ); - flow.freeTempLocal(idTemp); - flow.popBreakLabel(); - return module.block(label, conditions, NativeType.I32); - } - } // helpers From 619d9e100c57c423974a38b63079699c016d59f9 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 13:20:56 +0100 Subject: [PATCH 14/19] refactor names --- src/ast.ts | 2 - src/builtins.ts | 899 +++++++++--------- src/common.ts | 4 +- src/compiler.ts | 104 +- src/program.ts | 192 ++-- src/resolver.ts | 25 +- tests/compiler/abi.optimized.wat | 4 +- tests/compiler/abi.untouched.wat | 4 +- tests/compiler/asc-constants.untouched.wat | 4 +- tests/compiler/binary.optimized.wat | 4 +- tests/compiler/binary.untouched.wat | 4 +- tests/compiler/bool.untouched.wat | 4 +- tests/compiler/builtins.optimized.wat | 4 +- tests/compiler/builtins.untouched.wat | 4 +- tests/compiler/call-inferred.optimized.wat | 4 +- tests/compiler/call-inferred.untouched.wat | 4 +- tests/compiler/call-optional.optimized.wat | 4 +- tests/compiler/call-optional.untouched.wat | 4 +- tests/compiler/call-super.optimized.wat | 4 +- tests/compiler/call-super.untouched.wat | 4 +- .../compiler/class-overloading.untouched.wat | 4 +- .../class-static-function.optimized.wat | 4 +- .../class-static-function.untouched.wat | 4 +- tests/compiler/class.untouched.wat | 4 +- tests/compiler/comma.optimized.wat | 4 +- tests/compiler/comma.untouched.wat | 4 +- tests/compiler/constructor.optimized.wat | 4 +- tests/compiler/constructor.untouched.wat | 4 +- tests/compiler/declare.optimized.wat | 4 +- tests/compiler/declare.untouched.wat | 4 +- tests/compiler/do.optimized.wat | 4 +- tests/compiler/do.untouched.wat | 4 +- tests/compiler/enum.optimized.wat | 4 +- tests/compiler/enum.untouched.wat | 4 +- .../compiler/exportimport-table.untouched.wat | 4 +- tests/compiler/exports.optimized.wat | 4 +- tests/compiler/exports.untouched.wat | 4 +- .../extends-baseaggregate.optimized.wat | 4 +- .../extends-baseaggregate.untouched.wat | 4 +- .../js-bigint-integration.optimized.wat | 4 +- .../js-bigint-integration.untouched.wat | 4 +- .../features/mutable-globals.optimized.wat | 4 +- .../features/mutable-globals.untouched.wat | 4 +- .../features/reference-types.optimized.wat | 4 +- .../features/reference-types.untouched.wat | 4 +- tests/compiler/features/simd.optimized.wat | 4 +- tests/compiler/features/simd.untouched.wat | 4 +- tests/compiler/features/threads.optimized.wat | 4 +- tests/compiler/features/threads.untouched.wat | 4 +- tests/compiler/for.optimized.wat | 4 +- tests/compiler/for.untouched.wat | 4 +- .../function-expression.optimized.wat | 4 +- .../function-expression.untouched.wat | 4 +- tests/compiler/function-types.optimized.wat | 4 +- tests/compiler/function-types.untouched.wat | 4 +- tests/compiler/function.untouched.wat | 4 +- tests/compiler/getter-call.optimized.wat | 4 +- tests/compiler/getter-call.untouched.wat | 4 +- tests/compiler/getter-setter.optimized.wat | 4 +- tests/compiler/getter-setter.untouched.wat | 4 +- tests/compiler/if.optimized.wat | 4 +- tests/compiler/if.untouched.wat | 4 +- tests/compiler/import.untouched.wat | 4 +- tests/compiler/infer-array.optimized.wat | 4 +- tests/compiler/infer-array.untouched.wat | 4 +- tests/compiler/infer-generic.optimized.wat | 4 +- tests/compiler/infer-generic.untouched.wat | 4 +- tests/compiler/infer-type.optimized.wat | 4 +- tests/compiler/infer-type.untouched.wat | 4 +- .../inlining-blocklocals.optimized.wat | 4 +- .../inlining-blocklocals.untouched.wat | 4 +- tests/compiler/inlining.optimized.wat | 4 +- tests/compiler/inlining.untouched.wat | 4 +- tests/compiler/instanceof.optimized.wat | 4 +- tests/compiler/instanceof.untouched.wat | 4 +- tests/compiler/limits.untouched.wat | 4 +- tests/compiler/literals.untouched.wat | 4 +- tests/compiler/logical.optimized.wat | 4 +- tests/compiler/logical.untouched.wat | 4 +- tests/compiler/loop-flow.optimized.wat | 4 +- tests/compiler/loop-flow.untouched.wat | 4 +- tests/compiler/many-locals.optimized.wat | 4 +- tests/compiler/many-locals.untouched.wat | 4 +- tests/compiler/memcpy.optimized.wat | 4 +- tests/compiler/memcpy.untouched.wat | 4 +- tests/compiler/memmove.optimized.wat | 4 +- tests/compiler/memmove.untouched.wat | 4 +- tests/compiler/memset.optimized.wat | 4 +- tests/compiler/memset.untouched.wat | 4 +- tests/compiler/merge.untouched.wat | 4 +- tests/compiler/namespace.optimized.wat | 4 +- tests/compiler/namespace.untouched.wat | 4 +- tests/compiler/new.optimized.wat | 4 +- tests/compiler/new.untouched.wat | 4 +- tests/compiler/number.optimized.wat | 4 +- tests/compiler/number.untouched.wat | 4 +- .../optional-typeparameters.optimized.wat | 4 +- .../optional-typeparameters.untouched.wat | 4 +- tests/compiler/overflow.untouched.wat | 4 +- .../portable-conversions.untouched.wat | 4 +- tests/compiler/rc/global-init.optimized.wat | 4 +- tests/compiler/rc/global-init.untouched.wat | 4 +- tests/compiler/rc/local-init.optimized.wat | 4 +- tests/compiler/rc/local-init.untouched.wat | 4 +- .../rc/logical-and-mismatch.optimized.wat | 4 +- .../rc/logical-and-mismatch.untouched.wat | 4 +- .../rc/logical-or-mismatch.optimized.wat | 4 +- .../rc/logical-or-mismatch.untouched.wat | 4 +- tests/compiler/rc/rereturn.untouched.wat | 4 +- .../rc/ternary-mismatch.optimized.wat | 4 +- .../rc/ternary-mismatch.untouched.wat | 4 +- tests/compiler/reexport.optimized.wat | 4 +- tests/compiler/reexport.untouched.wat | 4 +- tests/compiler/rereexport.untouched.wat | 4 +- tests/compiler/resolve-access.optimized.wat | 4 +- tests/compiler/resolve-access.untouched.wat | 4 +- tests/compiler/resolve-binary.optimized.wat | 4 +- tests/compiler/resolve-binary.untouched.wat | 4 +- .../resolve-elementaccess.optimized.wat | 4 +- .../resolve-elementaccess.untouched.wat | 4 +- .../resolve-function-expression.optimized.wat | 4 +- .../resolve-function-expression.untouched.wat | 4 +- tests/compiler/resolve-new.optimized.wat | 4 +- tests/compiler/resolve-new.untouched.wat | 4 +- .../resolve-propertyaccess.optimized.wat | 4 +- .../resolve-propertyaccess.untouched.wat | 4 +- tests/compiler/resolve-ternary.optimized.wat | 4 +- tests/compiler/resolve-ternary.untouched.wat | 4 +- tests/compiler/resolve-unary.optimized.wat | 4 +- tests/compiler/resolve-unary.untouched.wat | 4 +- tests/compiler/retain-i32.optimized.wat | 4 +- tests/compiler/retain-i32.untouched.wat | 4 +- .../retain-release-sanity.optimized.wat | 4 +- .../retain-release-sanity.untouched.wat | 4 +- tests/compiler/retain-release.optimized.wat | 4 +- tests/compiler/retain-release.untouched.wat | 4 +- tests/compiler/retain-return.optimized.wat | 4 +- tests/compiler/retain-return.untouched.wat | 4 +- tests/compiler/rt/flags.optimized.wat | 4 +- tests/compiler/rt/flags.untouched.wat | 4 +- tests/compiler/rt/instanceof.optimized.wat | 4 +- tests/compiler/rt/instanceof.untouched.wat | 4 +- tests/compiler/rt/stub-realloc.optimized.wat | 4 +- tests/compiler/rt/stub-realloc.untouched.wat | 4 +- tests/compiler/runtime-stub.optimized.wat | 4 +- tests/compiler/runtime-stub.untouched.wat | 4 +- tests/compiler/scoped.optimized.wat | 4 +- tests/compiler/scoped.untouched.wat | 4 +- tests/compiler/static-this.untouched.wat | 4 +- .../compiler/std/array-literal.optimized.wat | 4 +- .../compiler/std/array-literal.untouched.wat | 4 +- tests/compiler/std/array.optimized.wat | 4 +- tests/compiler/std/array.untouched.wat | 4 +- tests/compiler/std/arraybuffer.optimized.wat | 4 +- tests/compiler/std/arraybuffer.untouched.wat | 4 +- tests/compiler/std/dataview.optimized.wat | 4 +- tests/compiler/std/dataview.untouched.wat | 4 +- tests/compiler/std/date.optimized.wat | 4 +- tests/compiler/std/date.untouched.wat | 4 +- tests/compiler/std/hash.optimized.wat | 4 +- tests/compiler/std/hash.untouched.wat | 4 +- tests/compiler/std/map.optimized.wat | 4 +- tests/compiler/std/map.untouched.wat | 4 +- tests/compiler/std/math.optimized.wat | 4 +- tests/compiler/std/math.untouched.wat | 4 +- tests/compiler/std/mod.optimized.wat | 4 +- tests/compiler/std/mod.untouched.wat | 4 +- tests/compiler/std/new.optimized.wat | 4 +- tests/compiler/std/new.untouched.wat | 4 +- .../compiler/std/object-literal.optimized.wat | 4 +- .../compiler/std/object-literal.untouched.wat | 4 +- tests/compiler/std/object.optimized.wat | 4 +- tests/compiler/std/object.untouched.wat | 4 +- .../std/operator-overloading.optimized.wat | 4 +- .../std/operator-overloading.untouched.wat | 4 +- tests/compiler/std/pointer.optimized.wat | 4 +- tests/compiler/std/pointer.untouched.wat | 4 +- tests/compiler/std/polyfills.untouched.wat | 4 +- tests/compiler/std/set.optimized.wat | 4 +- tests/compiler/std/set.untouched.wat | 4 +- tests/compiler/std/static-array.optimized.wat | 4 +- tests/compiler/std/static-array.untouched.wat | 4 +- .../std/string-encoding.optimized.wat | 4 +- .../std/string-encoding.untouched.wat | 4 +- tests/compiler/std/string.optimized.wat | 4 +- tests/compiler/std/string.untouched.wat | 4 +- tests/compiler/std/symbol.optimized.wat | 4 +- tests/compiler/std/symbol.untouched.wat | 4 +- tests/compiler/std/trace.optimized.wat | 4 +- tests/compiler/std/trace.untouched.wat | 4 +- tests/compiler/std/typedarray.optimized.wat | 4 +- tests/compiler/std/typedarray.untouched.wat | 4 +- tests/compiler/switch.optimized.wat | 4 +- tests/compiler/switch.untouched.wat | 4 +- tests/compiler/ternary.optimized.wat | 4 +- tests/compiler/ternary.untouched.wat | 4 +- tests/compiler/typeof.optimized.wat | 4 +- tests/compiler/typeof.untouched.wat | 4 +- tests/compiler/unary.optimized.wat | 4 +- tests/compiler/unary.untouched.wat | 4 +- tests/compiler/void.untouched.wat | 4 +- tests/compiler/wasi-snapshot.optimized.wat | 4 +- tests/compiler/wasi-snapshot.untouched.wat | 4 +- tests/compiler/while.optimized.wat | 4 +- tests/compiler/while.untouched.wat | 4 +- tests/compiler/wildcard-export.untouched.wat | 4 +- 206 files changed, 1019 insertions(+), 1007 deletions(-) diff --git a/src/ast.ts b/src/ast.ts index 9c52cd747a..5fd69274c8 100644 --- a/src/ast.ts +++ b/src/ast.ts @@ -5,7 +5,6 @@ import { CommonFlags, - CommonSymbols, PATH_DELIMITER, LIBRARY_PREFIX, LIBRARY_SUBST @@ -13,7 +12,6 @@ import { import { Token, - Tokenizer, Range } from "./tokenizer"; diff --git a/src/builtins.ts b/src/builtins.ts index 4ff3bc0e80..4e98301230 100644 --- a/src/builtins.ts +++ b/src/builtins.ts @@ -27,8 +27,7 @@ import { import { Type, TypeKind, - TypeFlags, - Signature + TypeFlags } from "./types"; import { @@ -92,8 +91,14 @@ import { isPowerOf2 } from "./util"; -/** Symbols of various compiler built-ins. */ -export namespace BuiltinSymbols { +/** Internal names of various compiler built-ins. */ +export namespace BuiltinNames { + + // compiler-generated + export const start = "~start"; + export const started = "~started"; + export const argumentsLength = "~argumentsLength"; + // std/builtins.ts export const isInteger = "~lib/builtins/isInteger"; export const isFloat = "~lib/builtins/isFloat"; @@ -584,7 +589,7 @@ export function compileCall( // === Static type evaluation ================================================================= - case BuiltinSymbols.isInteger: { // isInteger() / isInteger(value: T) -> bool + case BuiltinNames.isInteger: { // isInteger() / isInteger(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -592,7 +597,7 @@ export function compileCall( ? module.i32(1) : module.i32(0); } - case BuiltinSymbols.isFloat: { // isFloat() / isFloat(value: T) -> bool + case BuiltinNames.isFloat: { // isFloat() / isFloat(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -600,7 +605,7 @@ export function compileCall( ? module.i32(1) : module.i32(0); } - case BuiltinSymbols.isBoolean: { // isBoolean() / isBoolean(value: T) -> bool + case BuiltinNames.isBoolean: { // isBoolean() / isBoolean(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -608,7 +613,7 @@ export function compileCall( ? module.i32(1) : module.i32(0); } - case BuiltinSymbols.isSigned: { // isSigned() / isSigned(value: T) -> bool + case BuiltinNames.isSigned: { // isSigned() / isSigned(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -616,7 +621,7 @@ export function compileCall( ? module.i32(1) : module.i32(0); } - case BuiltinSymbols.isReference: { // isReference() / isReference(value: T) -> bool + case BuiltinNames.isReference: { // isReference() / isReference(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -624,7 +629,7 @@ export function compileCall( ? module.i32(1) : module.i32(0); } - case BuiltinSymbols.isString: { // isString() / isString(value: T) -> bool + case BuiltinNames.isString: { // isString() / isString(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -637,7 +642,7 @@ export function compileCall( } return module.i32(0); } - case BuiltinSymbols.isArray: { // isArray() / isArray(value: T) -> bool + case BuiltinNames.isArray: { // isArray() / isArray(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -649,7 +654,7 @@ export function compileCall( } return module.i32(0); } - case BuiltinSymbols.isArrayLike: { // isArrayLike() / isArrayLike(value: T) -> bool + case BuiltinNames.isArrayLike: { // isArrayLike() / isArrayLike(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); @@ -661,19 +666,19 @@ export function compileCall( } return module.i32(0); } - case BuiltinSymbols.isFunction: { // isFunction / isFunction(value: T) -> bool + case BuiltinNames.isFunction: { // isFunction / isFunction(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); return module.i32(type.signatureReference ? 1 : 0); } - case BuiltinSymbols.isNullable: { // isNullable / isNullable(value: T) -> bool + case BuiltinNames.isNullable: { // isNullable / isNullable(value: T) -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); return module.i32(type.is(TypeFlags.NULLABLE) ? 1 : 0); } - case BuiltinSymbols.isDefined: { // isDefined(expression) -> bool + case BuiltinNames.isDefined: { // isDefined(expression) -> bool compiler.currentType = Type.bool; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -687,7 +692,7 @@ export function compileCall( ); return module.i32(element ? 1 : 0); } - case BuiltinSymbols.isConstant: { // isConstant(expression) -> bool + case BuiltinNames.isConstant: { // isConstant(expression) -> bool compiler.currentType = Type.bool; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -697,19 +702,19 @@ export function compileCall( compiler.currentType = Type.bool; return module.i32(getExpressionId(expr) == ExpressionId.Const ? 1 : 0); } - case BuiltinSymbols.isManaged: { // isManaged() -> bool + case BuiltinNames.isManaged: { // isManaged() -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); return module.i32(type.isManaged ? 1 : 0); } - case BuiltinSymbols.isVoid: { // isVoid() -> bool + case BuiltinNames.isVoid: { // isVoid() -> bool let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.bool; if (!type) return module.unreachable(); return module.i32(type.kind == TypeKind.VOID ? 1 : 0); } - case BuiltinSymbols.lengthof: { // lengthof() -> i32 + case BuiltinNames.lengthof: { // lengthof() -> i32 let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.i32; if (!type) return module.unreachable(); @@ -723,7 +728,7 @@ export function compileCall( } return module.i32(signatureReference.parameterTypes.length); } - case BuiltinSymbols.sizeof: { // sizeof() -> usize + case BuiltinNames.sizeof: { // sizeof() -> usize compiler.currentType = compiler.options.usizeType; if ( checkTypeRequired(typeArguments, reportNode, compiler) | @@ -754,7 +759,7 @@ export function compileCall( return module.i32(byteSize); } } - case BuiltinSymbols.alignof: { // alignof() -> usize + case BuiltinNames.alignof: { // alignof() -> usize compiler.currentType = compiler.options.usizeType; if ( checkTypeRequired(typeArguments, reportNode, compiler) | @@ -786,7 +791,7 @@ export function compileCall( return module.i32(alignLog2); } } - case BuiltinSymbols.offsetof: { // offsetof(fieldName?: string) -> usize + case BuiltinNames.offsetof: { // offsetof(fieldName?: string) -> usize compiler.currentType = compiler.options.usizeType; if ( checkTypeRequired(typeArguments, reportNode, compiler) | @@ -851,7 +856,7 @@ export function compileCall( return module.i32(offset); } } - case BuiltinSymbols.nameof: { + case BuiltinNames.nameof: { let resultType = evaluateConstantType(compiler, typeArguments, operands, reportNode); if (!resultType) { compiler.currentType = compiler.program.stringInstance.type; @@ -896,7 +901,7 @@ export function compileCall( // === Math =================================================================================== - case BuiltinSymbols.clz: { // clz(value: T) -> T + case BuiltinNames.clz: { // clz(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -933,7 +938,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.ctz: { // ctz(value: T) -> T + case BuiltinNames.ctz: { // ctz(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -970,7 +975,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.popcnt: { // popcnt(value: T) -> T + case BuiltinNames.popcnt: { // popcnt(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1007,7 +1012,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.rotl: { // rotl(value: T, shift: T) -> T + case BuiltinNames.rotl: { // rotl(value: T, shift: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 2, reportNode, compiler) @@ -1050,7 +1055,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.rotr: { // rotr(value: T, shift: T) -> T + case BuiltinNames.rotr: { // rotr(value: T, shift: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 2, reportNode, compiler) @@ -1093,7 +1098,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.abs: { // abs(value: T) -> T + case BuiltinNames.abs: { // abs(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1193,7 +1198,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.max: { // max(left: T, right: T) -> T + case BuiltinNames.max: { // max(left: T, right: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 2, reportNode, compiler) @@ -1265,7 +1270,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.min: { // min(left: T, right: T) -> T + case BuiltinNames.min: { // min(left: T, right: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 2, reportNode, compiler) @@ -1337,7 +1342,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.ceil: { // ceil(value: T) -> T + case BuiltinNames.ceil: { // ceil(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1369,7 +1374,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.floor: { // floor(value: T) -> T + case BuiltinNames.floor: { // floor(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1401,7 +1406,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.copysign: { // copysign(left: T, right: T) -> T + case BuiltinNames.copysign: { // copysign(left: T, right: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 2, reportNode, compiler) @@ -1424,7 +1429,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.nearest: { // nearest(value: T) -> T + case BuiltinNames.nearest: { // nearest(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1456,7 +1461,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.reinterpret: { // reinterpret(value: *) -> T + case BuiltinNames.reinterpret: { // reinterpret(value: *) -> T if ( checkTypeRequired(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1510,7 +1515,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.sqrt: { // sqrt(value: T) -> T + case BuiltinNames.sqrt: { // sqrt(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1532,7 +1537,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.trunc: { // trunc(value: T) -> T + case BuiltinNames.trunc: { // trunc(value: T) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -1567,7 +1572,7 @@ export function compileCall( // === Memory access ========================================================================== - case BuiltinSymbols.load: { // load(offset: usize, immOffset?: usize, immAlign?: usize) -> T* + case BuiltinNames.load: { // load(offset: usize, immOffset?: usize, immAlign?: usize) -> T* if ( checkTypeRequired(typeArguments, reportNode, compiler, true) | checkArgsOptional(operands, 1, 3, reportNode, compiler) @@ -1623,7 +1628,7 @@ export function compileCall( immAlign ); } - case BuiltinSymbols.store: { // store(offset: usize, value: T*, offset?: usize, align?: usize) -> void + case BuiltinNames.store: { // store(offset: usize, value: T*, offset?: usize, align?: usize) -> void compiler.currentType = Type.void; if ( checkTypeRequired(typeArguments, reportNode, compiler) | @@ -1696,7 +1701,7 @@ export function compileCall( // === Atomics ================================================================================ - case BuiltinSymbols.atomic_load: { // load(offset: usize, immOffset?: usize) -> T* + case BuiltinNames.atomic_load: { // load(offset: usize, immOffset?: usize) -> T* if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -1730,7 +1735,7 @@ export function compileCall( immOffset ); } - case BuiltinSymbols.atomic_store: { // store(offset: usize, value: T*, immOffset?: usize) -> void + case BuiltinNames.atomic_store: { // store(offset: usize, value: T*, immOffset?: usize) -> void if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -1782,12 +1787,12 @@ export function compileCall( compiler.currentType = Type.void; return module.atomic_store(type.byteSize, arg0, arg1, inType.toNativeType(), immOffset); } - case BuiltinSymbols.atomic_add: // any_atomic_binary(ptr, value: T, immOffset?: usize) -> T - case BuiltinSymbols.atomic_sub: - case BuiltinSymbols.atomic_and: - case BuiltinSymbols.atomic_or: - case BuiltinSymbols.atomic_xor: - case BuiltinSymbols.atomic_xchg: { + case BuiltinNames.atomic_add: // any_atomic_binary(ptr, value: T, immOffset?: usize) -> T + case BuiltinNames.atomic_sub: + case BuiltinNames.atomic_and: + case BuiltinNames.atomic_or: + case BuiltinNames.atomic_xor: + case BuiltinNames.atomic_xchg: { if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -1798,12 +1803,12 @@ export function compileCall( let opName: string; switch (prototype.internalName) { default: assert(false); - case BuiltinSymbols.atomic_add: { opName = "atomic.add"; break; } - case BuiltinSymbols.atomic_sub: { opName = "atomic.sub"; break; } - case BuiltinSymbols.atomic_and: { opName = "atomic.and"; break; } - case BuiltinSymbols.atomic_or: { opName = "atomic.or"; break; } - case BuiltinSymbols.atomic_xor: { opName = "atomic.xor"; break; } - case BuiltinSymbols.atomic_xchg: { opName = "atomic.xchg"; break; } + case BuiltinNames.atomic_add: { opName = "atomic.add"; break; } + case BuiltinNames.atomic_sub: { opName = "atomic.sub"; break; } + case BuiltinNames.atomic_and: { opName = "atomic.and"; break; } + case BuiltinNames.atomic_or: { opName = "atomic.or"; break; } + case BuiltinNames.atomic_xor: { opName = "atomic.xor"; break; } + case BuiltinNames.atomic_xchg: { opName = "atomic.xchg"; break; } } compiler.error( DiagnosticCode.Operation_0_cannot_be_applied_to_type_1, @@ -1850,17 +1855,17 @@ export function compileCall( let op: AtomicRMWOp; switch (prototype.internalName) { default: assert(false); - case BuiltinSymbols.atomic_add: { op = AtomicRMWOp.Add; break; } - case BuiltinSymbols.atomic_sub: { op = AtomicRMWOp.Sub; break; } - case BuiltinSymbols.atomic_and: { op = AtomicRMWOp.And; break; } - case BuiltinSymbols.atomic_or: { op = AtomicRMWOp.Or; break; } - case BuiltinSymbols.atomic_xor: { op = AtomicRMWOp.Xor; break; } - case BuiltinSymbols.atomic_xchg: { op = AtomicRMWOp.Xchg; break; } + case BuiltinNames.atomic_add: { op = AtomicRMWOp.Add; break; } + case BuiltinNames.atomic_sub: { op = AtomicRMWOp.Sub; break; } + case BuiltinNames.atomic_and: { op = AtomicRMWOp.And; break; } + case BuiltinNames.atomic_or: { op = AtomicRMWOp.Or; break; } + case BuiltinNames.atomic_xor: { op = AtomicRMWOp.Xor; break; } + case BuiltinNames.atomic_xchg: { op = AtomicRMWOp.Xchg; break; } } compiler.currentType = inType; return module.atomic_rmw(op, type.byteSize, immOffset, arg0, arg1, inType.toNativeType()); } - case BuiltinSymbols.atomic_cmpxchg: { // cmpxchg(ptr: usize, expected: T, replacement: T, off?: usize) -> T + case BuiltinNames.atomic_cmpxchg: { // cmpxchg(ptr: usize, expected: T, replacement: T, off?: usize) -> T if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -1922,7 +1927,7 @@ export function compileCall( compiler.currentType = inType; return module.atomic_cmpxchg(type.byteSize, immOffset, arg0, arg1, arg2, inType.toNativeType()); } - case BuiltinSymbols.atomic_wait: { // wait(ptr: usize, expected: T, timeout: i64) -> i32 + case BuiltinNames.atomic_wait: { // wait(ptr: usize, expected: T, timeout: i64) -> i32 if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -1950,7 +1955,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.atomic_notify: { // notify(ptr: usize, count: i32) -> i32 + case BuiltinNames.atomic_notify: { // notify(ptr: usize, count: i32) -> i32 if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -1964,7 +1969,7 @@ export function compileCall( compiler.currentType = Type.i32; return module.atomic_notify(arg0, arg1); } - case BuiltinSymbols.atomic_fence: { // fence() -> void + case BuiltinNames.atomic_fence: { // fence() -> void compiler.currentType = Type.void; if ( checkFeatureEnabled(Feature.THREADS, reportNode, compiler) | @@ -1976,7 +1981,7 @@ export function compileCall( // === Control flow =========================================================================== - case BuiltinSymbols.select: { // select(ifTrue: T, ifFalse: T, condition: bool) -> T + case BuiltinNames.select: { // select(ifTrue: T, ifFalse: T, condition: bool) -> T if ( checkTypeOptional(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 3, reportNode, compiler) @@ -2000,7 +2005,7 @@ export function compileCall( compiler.currentType = type; return module.select(arg0, arg1, arg2); } - case BuiltinSymbols.unreachable: { // unreachable() -> * + case BuiltinNames.unreachable: { // unreachable() -> * if (typeArguments) { compiler.error( DiagnosticCode.Type_0_is_not_generic, @@ -2013,7 +2018,7 @@ export function compileCall( // === Memory ================================================================================= - case BuiltinSymbols.memory_size: { // memory.size() -> i32 + case BuiltinNames.memory_size: { // memory.size() -> i32 compiler.currentType = Type.i32; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2021,7 +2026,7 @@ export function compileCall( ) return module.unreachable(); return module.host(HostOp.MemorySize); } - case BuiltinSymbols.memory_grow: { // memory.grow(pages: i32) -> i32 + case BuiltinNames.memory_grow: { // memory.grow(pages: i32) -> i32 compiler.currentType = Type.i32; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2031,7 +2036,7 @@ export function compileCall( compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_IMPLICIT) ]); } - case BuiltinSymbols.memory_copy: { // memory.copy(dest: usize, src: usize: n: usize) -> void + case BuiltinNames.memory_copy: { // memory.copy(dest: usize, src: usize: n: usize) -> void compiler.currentType = Type.void; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2051,7 +2056,7 @@ export function compileCall( compiler.currentType = Type.void; return module.memory_copy(arg0, arg1, arg2); } - case BuiltinSymbols.memory_fill: { // memory.fill(dest: usize, value: u8, n: usize) -> void + case BuiltinNames.memory_fill: { // memory.fill(dest: usize, value: u8, n: usize) -> void compiler.currentType = Type.void; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2074,7 +2079,7 @@ export function compileCall( // === Helpers ================================================================================ - case BuiltinSymbols.changetype: { // changetype(value: *) -> T + case BuiltinNames.changetype: { // changetype(value: *) -> T if ( checkTypeRequired(typeArguments, reportNode, compiler, true) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2092,7 +2097,7 @@ export function compileCall( } return arg0; } - case BuiltinSymbols.assert: { // assert(isTrueish: T, message?: string) -> T{!= null} + case BuiltinNames.assert: { // assert(isTrueish: T, message?: string) -> T{!= null} if ( checkTypeOptional(typeArguments, reportNode, compiler) | checkArgsOptional(operands, 1, 2, reportNode, compiler) @@ -2279,7 +2284,7 @@ export function compileCall( ); return abort; } - case BuiltinSymbols.unchecked: { // unchecked(expr: *) -> * + case BuiltinNames.unchecked: { // unchecked(expr: *) -> * if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2292,7 +2297,7 @@ export function compileCall( if (!alreadyUnchecked) flow.unset(FlowFlags.UNCHECKED_CONTEXT); return expr; } - case BuiltinSymbols.instantiate: { // instantiate(...args: *[]) -> T + case BuiltinNames.instantiate: { // instantiate(...args: *[]) -> T if ( checkTypeRequired(typeArguments, reportNode, compiler, true) ) return module.unreachable(); @@ -2311,7 +2316,7 @@ export function compileCall( // === User-defined diagnostics =============================================================== - case BuiltinSymbols.ERROR: { + case BuiltinNames.ERROR: { checkTypeAbsent(typeArguments, reportNode, prototype); compiler.error( DiagnosticCode.User_defined_0, @@ -2319,7 +2324,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.WARNING: { + case BuiltinNames.WARNING: { checkTypeAbsent(typeArguments, reportNode, prototype); compiler.warning( DiagnosticCode.User_defined_0, @@ -2327,7 +2332,7 @@ export function compileCall( ); return module.nop(); } - case BuiltinSymbols.INFO: { + case BuiltinNames.INFO: { checkTypeAbsent(typeArguments, reportNode, prototype); compiler.info( DiagnosticCode.User_defined_0, @@ -2338,7 +2343,7 @@ export function compileCall( // === Portable type conversions ============================================================== - case BuiltinSymbols.i8: { + case BuiltinNames.i8: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2348,7 +2353,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.i8, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.i16: { + case BuiltinNames.i16: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2358,7 +2363,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.i16, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.i32: { + case BuiltinNames.i32: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2368,7 +2373,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.i32, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.i64: { + case BuiltinNames.i64: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2378,7 +2383,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.i64, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.isize: { + case BuiltinNames.isize: { let isizeType = compiler.options.isizeType; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2389,7 +2394,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], isizeType, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.u8: { + case BuiltinNames.u8: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2399,7 +2404,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.u8, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.u16: { + case BuiltinNames.u16: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2409,7 +2414,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.u16, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.u32: { + case BuiltinNames.u32: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2419,7 +2424,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.u64: { + case BuiltinNames.u64: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2429,7 +2434,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.u64, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.usize: { + case BuiltinNames.usize: { let usizeType = compiler.options.usizeType; if ( checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2440,7 +2445,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], usizeType, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.bool: { + case BuiltinNames.bool: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2450,7 +2455,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.bool, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.f32: { + case BuiltinNames.f32: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2460,7 +2465,7 @@ export function compileCall( } return compiler.compileExpression(operands[0], Type.f32, Constraints.CONV_EXPLICIT); } - case BuiltinSymbols.f64: { + case BuiltinNames.f64: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -2473,8 +2478,8 @@ export function compileCall( // === SIMD =================================================================================== - case BuiltinSymbols.v128: // alias for now - case BuiltinSymbols.i8x16: { + case BuiltinNames.v128: // alias for now + case BuiltinNames.i8x16: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2503,7 +2508,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.i16x8: { + case BuiltinNames.i16x8: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2532,7 +2537,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.i32x4: { + case BuiltinNames.i32x4: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2561,7 +2566,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.i64x2: { + case BuiltinNames.i64x2: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2592,7 +2597,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.f32x4: { + case BuiltinNames.f32x4: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2621,7 +2626,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.f64x2: { + case BuiltinNames.f64x2: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2650,7 +2655,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.v128(bytes); } - case BuiltinSymbols.v128_splat: { // splat(x: T) -> v128 + case BuiltinNames.v128_splat: { // splat(x: T) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -2691,7 +2696,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_extract_lane: { // extract_lane(x: v128, idx: u8) -> T + case BuiltinNames.v128_extract_lane: { // extract_lane(x: v128, idx: u8) -> T if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -2748,7 +2753,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_replace_lane: { // replace_lane(x: v128, idx: u8, value: T) -> v128 + case BuiltinNames.v128_replace_lane: { // replace_lane(x: v128, idx: u8, value: T) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -2809,7 +2814,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_shuffle: { // shuffle(a: v128, b: v128, ...lanes: u8[]) -> v128 + case BuiltinNames.v128_shuffle: { // shuffle(a: v128, b: v128, ...lanes: u8[]) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) @@ -2915,7 +2920,7 @@ export function compileCall( compiler.currentType = Type.v128; return module.unreachable(); } - case BuiltinSymbols.v128_swizzle: { // swizzle(a: v128, b: v128) -> v128 + case BuiltinNames.v128_swizzle: { // swizzle(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -2928,7 +2933,7 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); return module.binary(BinaryOp.SwizzleV8x16, arg0, arg1); } - case BuiltinSymbols.v128_load_splat: { // load_splat(ptr: usize, immOffset?: usize, immAlign?: usize) -> v128 + case BuiltinNames.v128_load_splat: { // load_splat(ptr: usize, immOffset?: usize, immAlign?: usize) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -3003,7 +3008,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_load_ext: { // load_ext(ptr: usize, immOffset?: usize, immAlign?: usize) -> v128 + case BuiltinNames.v128_load_ext: { // load_ext(ptr: usize, immOffset?: usize, immAlign?: usize) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler, true) | @@ -3067,7 +3072,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_add: { // add(a: v128, b: v128) -> v128 + case BuiltinNames.v128_add: { // add(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3108,7 +3113,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_sub: { // sub(a: v128, b: v128) -> v128 + case BuiltinNames.v128_sub: { // sub(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3149,7 +3154,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_mul: { // mul(a: v128, b: v128) -> v128 + case BuiltinNames.v128_mul: { // mul(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3186,7 +3191,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_div: { // div(a: v128, b: v128) -> v128 + case BuiltinNames.v128_div: { // div(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3210,7 +3215,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_add_saturate: { // add_saturate(a: v128, b: v128) -> v128 + case BuiltinNames.v128_add_saturate: { // add_saturate(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3236,7 +3241,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_sub_saturate: { // sub_saturate(a: v128, b: v128) -> v128 + case BuiltinNames.v128_sub_saturate: { // sub_saturate(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3262,7 +3267,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_min: { // min(a: v128, b: v128) -> v128 + case BuiltinNames.v128_min: { // min(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3300,7 +3305,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_max: { // max(a: v128, b: v128) -> v128 + case BuiltinNames.v128_max: { // max(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3338,7 +3343,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_dot: { // dot(a: v128, b: v128) -> v128 + case BuiltinNames.v128_dot: { // dot(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3361,7 +3366,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_avgr: { // avgr(a: v128, b: v128) -> v128 + case BuiltinNames.v128_avgr: { // avgr(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3385,7 +3390,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_eq: { // eq(a: v128, b: v128) -> v128 + case BuiltinNames.v128_eq: { // eq(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3422,7 +3427,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_ne: { // ne(a: v128, b: v128) -> v128 + case BuiltinNames.v128_ne: { // ne(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3459,7 +3464,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_lt: { // lt(a: v128, b: v128) -> v128 + case BuiltinNames.v128_lt: { // lt(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3501,7 +3506,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_le: { // le(a: v128, b: v128) -> v128 + case BuiltinNames.v128_le: { // le(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3543,7 +3548,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_gt: { // gt(a: v128, b: v128) -> v128 + case BuiltinNames.v128_gt: { // gt(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3585,7 +3590,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_ge: { // ge(a: v128, b: v128) -> v128 + case BuiltinNames.v128_ge: { // ge(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3627,7 +3632,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_narrow: { + case BuiltinNames.v128_narrow: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3653,7 +3658,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_neg: { + case BuiltinNames.v128_neg: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3693,7 +3698,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_abs: { + case BuiltinNames.v128_abs: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3716,7 +3721,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_sqrt: { + case BuiltinNames.v128_sqrt: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3739,7 +3744,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_convert: { + case BuiltinNames.v128_convert: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3764,7 +3769,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_trunc_sat: { + case BuiltinNames.v128_trunc_sat: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3789,7 +3794,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_widen_low: { + case BuiltinNames.v128_widen_low: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3814,7 +3819,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_widen_high: { + case BuiltinNames.v128_widen_high: { if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3839,7 +3844,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_shl: { // shl(a: v128, b: i32) -> v128 + case BuiltinNames.v128_shl: { // shl(a: v128, b: i32) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3879,7 +3884,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_shr: { // shr(a: v128, b: i32) -> v128 + case BuiltinNames.v128_shr: { // shr(a: v128, b: i32) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -3926,7 +3931,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_and: { // and(a: v128) -> v128 + case BuiltinNames.v128_and: { // and(a: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -3939,7 +3944,7 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); return module.binary(BinaryOp.AndV128, arg0, arg1); } - case BuiltinSymbols.v128_or: { // or(a: v128) -> v128 + case BuiltinNames.v128_or: { // or(a: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -3952,7 +3957,7 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); return module.binary(BinaryOp.OrV128, arg0, arg1); } - case BuiltinSymbols.v128_xor: { // xor(a: v128) -> v128 + case BuiltinNames.v128_xor: { // xor(a: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -3965,7 +3970,7 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); return module.binary(BinaryOp.XorV128, arg0, arg1); } - case BuiltinSymbols.v128_andnot: { // andnot(a: v128, b: v128) -> v128 + case BuiltinNames.v128_andnot: { // andnot(a: v128, b: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -3978,7 +3983,7 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.v128, Constraints.CONV_IMPLICIT); return module.binary(BinaryOp.AndNotV128, arg0, arg1); } - case BuiltinSymbols.v128_not: { // not(a: v128) -> v128 + case BuiltinNames.v128_not: { // not(a: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -3990,7 +3995,7 @@ export function compileCall( let arg0 = compiler.compileExpression(operands[0], Type.v128, Constraints.CONV_IMPLICIT); return module.unary(UnaryOp.NotV128, arg0); } - case BuiltinSymbols.v128_bitselect: { // bitselect(v1: v128, v2: v128, c: v128) -> v128 + case BuiltinNames.v128_bitselect: { // bitselect(v1: v128, v2: v128, c: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeAbsent(typeArguments, reportNode, prototype) | @@ -4004,7 +4009,7 @@ export function compileCall( let arg2 = compiler.compileExpression(operands[2], Type.v128, Constraints.CONV_IMPLICIT); return module.simd_ternary(SIMDTernaryOp.Bitselect, arg0, arg1, arg2); } - case BuiltinSymbols.v128_any_true: { // any_true(a: v128) -> bool + case BuiltinNames.v128_any_true: { // any_true(a: v128) -> bool if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -4043,7 +4048,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_all_true: { // all_true(a: v128) -> bool + case BuiltinNames.v128_all_true: { // all_true(a: v128) -> bool if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -4082,7 +4087,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_qfma: { // qfma(a: v128, b: v128, c: v128) -> v128 + case BuiltinNames.v128_qfma: { // qfma(a: v128, b: v128, c: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -4107,7 +4112,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.v128_qfms: { // qfms(a: v128, b: v128, c: v128) -> v128 + case BuiltinNames.v128_qfms: { // qfms(a: v128, b: v128, c: v128) -> v128 if ( checkFeatureEnabled(Feature.SIMD, reportNode, compiler) | checkTypeRequired(typeArguments, reportNode, compiler) | @@ -4135,7 +4140,7 @@ export function compileCall( // === Internal runtime ======================================================================= - case BuiltinSymbols.idof: { + case BuiltinNames.idof: { let type = evaluateConstantType(compiler, typeArguments, operands, reportNode); compiler.currentType = Type.u32; if (!type) return module.unreachable(); @@ -4155,7 +4160,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.visit_globals: { + case BuiltinNames.visit_globals: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 1, reportNode, compiler) // cookie @@ -4166,9 +4171,9 @@ export function compileCall( let arg0 = compiler.compileExpression(operands[0], Type.u32, Constraints.CONV_IMPLICIT); compiler.runtimeFeatures |= RuntimeFeatures.visitGlobals; compiler.currentType = Type.void; - return module.call(BuiltinSymbols.visit_globals, [ arg0 ], NativeType.None); + return module.call(BuiltinNames.visit_globals, [ arg0 ], NativeType.None); } - case BuiltinSymbols.visit_members: { + case BuiltinNames.visit_members: { if ( checkTypeAbsent(typeArguments, reportNode, prototype) | checkArgsRequired(operands, 2, reportNode, compiler) // ref, cookie @@ -4180,9 +4185,9 @@ export function compileCall( let arg1 = compiler.compileExpression(operands[1], Type.u32, Constraints.CONV_IMPLICIT); compiler.runtimeFeatures |= RuntimeFeatures.visitMembers; compiler.currentType = Type.void; - return module.call(BuiltinSymbols.visit_members, [ arg0, arg1 ], NativeType.None); + return module.call(BuiltinNames.visit_members, [ arg0, arg1 ], NativeType.None); } - case BuiltinSymbols.isNaN: { + case BuiltinNames.isNaN: { if ( checkTypeOptional(typeArguments, reportNode, compiler) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -4256,7 +4261,7 @@ export function compileCall( ); return module.unreachable(); } - case BuiltinSymbols.isFinite: { + case BuiltinNames.isFinite: { if ( checkTypeOptional(typeArguments, reportNode, compiler) | checkArgsRequired(operands, 1, reportNode, compiler) @@ -4379,320 +4384,320 @@ function tryDeferASM( // and, or, xor, shl, shr_u, shr_s // eq, eqz, ne, lt_s, lt_u, le_s, le_u, gt_s, gt_u, ge_s, ge_u - case BuiltinSymbols.i32_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_clz: return deferASM(BuiltinSymbols.clz, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_ctz: return deferASM(BuiltinSymbols.ctz, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_popcnt: return deferASM(BuiltinSymbols.popcnt, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_rotl: return deferASM(BuiltinSymbols.rotl, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_rotr: return deferASM(BuiltinSymbols.rotr, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.f32_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_abs: return deferASM(BuiltinSymbols.abs, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_max: return deferASM(BuiltinSymbols.max, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_max: return deferASM(BuiltinSymbols.max, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_min: return deferASM(BuiltinSymbols.min, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_min: return deferASM(BuiltinSymbols.min, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_ceil: return deferASM(BuiltinSymbols.ceil, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_floor: return deferASM(BuiltinSymbols.floor, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_copysign: return deferASM(BuiltinSymbols.copysign, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_nearest: return deferASM(BuiltinSymbols.nearest, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.i32_reinterpret_f32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i32, operands, Type.f32, reportNode); - case BuiltinSymbols.i64_reinterpret_f64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.i64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_reinterpret_i32: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f32, operands, Type.i32, reportNode); - case BuiltinSymbols.f64_reinterpret_i64: return deferASM(BuiltinSymbols.reinterpret, compiler, Type.f64, operands, Type.i64, reportNode); - case BuiltinSymbols.f32_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_sqrt: return deferASM(BuiltinSymbols.sqrt, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f32_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_trunc: return deferASM(BuiltinSymbols.trunc, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.i32_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_load: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_load8_s: return deferASM(BuiltinSymbols.load, compiler, Type.i8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load8_u: return deferASM(BuiltinSymbols.load, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load16_s: return deferASM(BuiltinSymbols.load, compiler, Type.i16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load16_u: return deferASM(BuiltinSymbols.load, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load32_s: return deferASM(BuiltinSymbols.load, compiler, Type.i32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load32_u: return deferASM(BuiltinSymbols.load, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_load: return deferASM(BuiltinSymbols.load, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.f32_load: return deferASM(BuiltinSymbols.load, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_load: return deferASM(BuiltinSymbols.load, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.i32_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_store: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_store8: return deferASM(BuiltinSymbols.store, compiler, Type.i8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_store16: return deferASM(BuiltinSymbols.store, compiler, Type.i16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_store32: return deferASM(BuiltinSymbols.store, compiler, Type.i32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_store: return deferASM(BuiltinSymbols.store, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.f32_store: return deferASM(BuiltinSymbols.store, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f64_store: return deferASM(BuiltinSymbols.store, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.i32_clz: return deferASM(BuiltinNames.clz, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_clz: return deferASM(BuiltinNames.clz, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_ctz: return deferASM(BuiltinNames.ctz, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_ctz: return deferASM(BuiltinNames.ctz, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_popcnt: return deferASM(BuiltinNames.popcnt, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_popcnt: return deferASM(BuiltinNames.popcnt, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_rotl: return deferASM(BuiltinNames.rotl, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_rotl: return deferASM(BuiltinNames.rotl, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_rotr: return deferASM(BuiltinNames.rotr, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_rotr: return deferASM(BuiltinNames.rotr, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.f32_abs: return deferASM(BuiltinNames.abs, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_abs: return deferASM(BuiltinNames.abs, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_max: return deferASM(BuiltinNames.max, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_max: return deferASM(BuiltinNames.max, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_min: return deferASM(BuiltinNames.min, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_min: return deferASM(BuiltinNames.min, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_ceil: return deferASM(BuiltinNames.ceil, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_ceil: return deferASM(BuiltinNames.ceil, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_floor: return deferASM(BuiltinNames.floor, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_floor: return deferASM(BuiltinNames.floor, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_copysign: return deferASM(BuiltinNames.copysign, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_copysign: return deferASM(BuiltinNames.copysign, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_nearest: return deferASM(BuiltinNames.nearest, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_nearest: return deferASM(BuiltinNames.nearest, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.i32_reinterpret_f32: return deferASM(BuiltinNames.reinterpret, compiler, Type.i32, operands, Type.f32, reportNode); + case BuiltinNames.i64_reinterpret_f64: return deferASM(BuiltinNames.reinterpret, compiler, Type.i64, operands, Type.f64, reportNode); + case BuiltinNames.f32_reinterpret_i32: return deferASM(BuiltinNames.reinterpret, compiler, Type.f32, operands, Type.i32, reportNode); + case BuiltinNames.f64_reinterpret_i64: return deferASM(BuiltinNames.reinterpret, compiler, Type.f64, operands, Type.i64, reportNode); + case BuiltinNames.f32_sqrt: return deferASM(BuiltinNames.sqrt, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_sqrt: return deferASM(BuiltinNames.sqrt, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f32_trunc: return deferASM(BuiltinNames.trunc, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_trunc: return deferASM(BuiltinNames.trunc, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.i32_load8_s: return deferASM(BuiltinNames.load, compiler, Type.i8, operands, Type.i32, reportNode); + case BuiltinNames.i32_load8_u: return deferASM(BuiltinNames.load, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_load16_s: return deferASM(BuiltinNames.load, compiler, Type.i16, operands, Type.i32, reportNode); + case BuiltinNames.i32_load16_u: return deferASM(BuiltinNames.load, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_load: return deferASM(BuiltinNames.load, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_load8_s: return deferASM(BuiltinNames.load, compiler, Type.i8, operands, Type.i64, reportNode); + case BuiltinNames.i64_load8_u: return deferASM(BuiltinNames.load, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_load16_s: return deferASM(BuiltinNames.load, compiler, Type.i16, operands, Type.i64, reportNode); + case BuiltinNames.i64_load16_u: return deferASM(BuiltinNames.load, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_load32_s: return deferASM(BuiltinNames.load, compiler, Type.i32, operands, Type.i64, reportNode); + case BuiltinNames.i64_load32_u: return deferASM(BuiltinNames.load, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_load: return deferASM(BuiltinNames.load, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.f32_load: return deferASM(BuiltinNames.load, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_load: return deferASM(BuiltinNames.load, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.i32_store8: return deferASM(BuiltinNames.store, compiler, Type.i8, operands, Type.i32, reportNode); + case BuiltinNames.i32_store16: return deferASM(BuiltinNames.store, compiler, Type.i16, operands, Type.i32, reportNode); + case BuiltinNames.i32_store: return deferASM(BuiltinNames.store, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_store8: return deferASM(BuiltinNames.store, compiler, Type.i8, operands, Type.i64, reportNode); + case BuiltinNames.i64_store16: return deferASM(BuiltinNames.store, compiler, Type.i16, operands, Type.i64, reportNode); + case BuiltinNames.i64_store32: return deferASM(BuiltinNames.store, compiler, Type.i32, operands, Type.i64, reportNode); + case BuiltinNames.i64_store: return deferASM(BuiltinNames.store, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.f32_store: return deferASM(BuiltinNames.store, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f64_store: return deferASM(BuiltinNames.store, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.i32_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_load8_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_load16_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_load32_u: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_load: return deferASM(BuiltinSymbols.atomic_load, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_load8_u: return deferASM(BuiltinNames.atomic_load, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_load16_u: return deferASM(BuiltinNames.atomic_load, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_load: return deferASM(BuiltinNames.atomic_load, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_load8_u: return deferASM(BuiltinNames.atomic_load, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_load16_u: return deferASM(BuiltinNames.atomic_load, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_load32_u: return deferASM(BuiltinNames.atomic_load, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_load: return deferASM(BuiltinNames.atomic_load, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_store8: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_store16: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_store32: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_store: return deferASM(BuiltinSymbols.atomic_store, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_store8: return deferASM(BuiltinNames.atomic_store, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_store16: return deferASM(BuiltinNames.atomic_store, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_store: return deferASM(BuiltinNames.atomic_store, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_store8: return deferASM(BuiltinNames.atomic_store, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_store16: return deferASM(BuiltinNames.atomic_store, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_store32: return deferASM(BuiltinNames.atomic_store, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_store: return deferASM(BuiltinNames.atomic_store, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_add_u: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_add: return deferASM(BuiltinSymbols.atomic_add, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_add_u: return deferASM(BuiltinNames.atomic_add, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_add_u: return deferASM(BuiltinNames.atomic_add, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_add: return deferASM(BuiltinNames.atomic_add, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_add_u: return deferASM(BuiltinNames.atomic_add, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_add_u: return deferASM(BuiltinNames.atomic_add, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_add_u: return deferASM(BuiltinNames.atomic_add, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_add: return deferASM(BuiltinNames.atomic_add, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_sub_u: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_sub: return deferASM(BuiltinSymbols.atomic_sub, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_sub_u: return deferASM(BuiltinNames.atomic_sub, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_sub_u: return deferASM(BuiltinNames.atomic_sub, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_sub: return deferASM(BuiltinNames.atomic_sub, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_sub_u: return deferASM(BuiltinNames.atomic_sub, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_sub_u: return deferASM(BuiltinNames.atomic_sub, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_sub_u: return deferASM(BuiltinNames.atomic_sub, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_sub: return deferASM(BuiltinNames.atomic_sub, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_and_u: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_and: return deferASM(BuiltinSymbols.atomic_and, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_and_u: return deferASM(BuiltinNames.atomic_and, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_and_u: return deferASM(BuiltinNames.atomic_and, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_and: return deferASM(BuiltinNames.atomic_and, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_and_u: return deferASM(BuiltinNames.atomic_and, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_and_u: return deferASM(BuiltinNames.atomic_and, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_and_u: return deferASM(BuiltinNames.atomic_and, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_and: return deferASM(BuiltinNames.atomic_and, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_or_u: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_or: return deferASM(BuiltinSymbols.atomic_or, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_or_u: return deferASM(BuiltinNames.atomic_or, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_or_u: return deferASM(BuiltinNames.atomic_or, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_or: return deferASM(BuiltinNames.atomic_or, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_or_u: return deferASM(BuiltinNames.atomic_or, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_or_u: return deferASM(BuiltinNames.atomic_or, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_or_u: return deferASM(BuiltinNames.atomic_or, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_or: return deferASM(BuiltinNames.atomic_or, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_xor_u: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_xor: return deferASM(BuiltinSymbols.atomic_xor, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_xor_u: return deferASM(BuiltinNames.atomic_xor, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_xor_u: return deferASM(BuiltinNames.atomic_xor, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_xor: return deferASM(BuiltinNames.atomic_xor, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_xor_u: return deferASM(BuiltinNames.atomic_xor, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_xor_u: return deferASM(BuiltinNames.atomic_xor, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_xor_u: return deferASM(BuiltinNames.atomic_xor, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_xor: return deferASM(BuiltinNames.atomic_xor, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_xchg_u: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_xchg: return deferASM(BuiltinSymbols.atomic_xchg, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_xchg_u: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_xchg_u: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_xchg: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_xchg_u: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_xchg_u: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_xchg_u: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_xchg: return deferASM(BuiltinNames.atomic_xchg, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i32, reportNode); - case BuiltinSymbols.i32_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u8, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u16, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw32_cmpxchg_u: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.u32, operands, Type.i64, reportNode); - case BuiltinSymbols.i64_atomic_rmw_cmpxchg: return deferASM(BuiltinSymbols.atomic_cmpxchg, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i32_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.u8, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.u16, operands, Type.i32, reportNode); + case BuiltinNames.i32_atomic_rmw_cmpxchg: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_atomic_rmw8_cmpxchg_u: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.u8, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw16_cmpxchg_u: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.u16, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw32_cmpxchg_u: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.u32, operands, Type.i64, reportNode); + case BuiltinNames.i64_atomic_rmw_cmpxchg: return deferASM(BuiltinNames.atomic_cmpxchg, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i32_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i64_wait: return deferASM(BuiltinSymbols.atomic_wait, compiler, Type.i64, operands, Type.i32, reportNode); + case BuiltinNames.i32_wait: return deferASM(BuiltinNames.atomic_wait, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i64_wait: return deferASM(BuiltinNames.atomic_wait, compiler, Type.i64, operands, Type.i32, reportNode); - case BuiltinSymbols.v128_load: return deferASM(BuiltinSymbols.load, compiler, Type.v128, operands, Type.v128, reportNode); - case BuiltinSymbols.v128_store: return deferASM(BuiltinSymbols.store, compiler, Type.v128, operands, Type.v128, reportNode); + case BuiltinNames.v128_load: return deferASM(BuiltinNames.load, compiler, Type.v128, operands, Type.v128, reportNode); + case BuiltinNames.v128_store: return deferASM(BuiltinNames.store, compiler, Type.v128, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i8, operands, Type.i8, reportNode); - case BuiltinSymbols.i8x16_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u8, operands, Type.u8, reportNode); - case BuiltinSymbols.i8x16_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_min_s: return deferASM(BuiltinSymbols.v128_min, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_min_u: return deferASM(BuiltinSymbols.v128_min, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_max_s: return deferASM(BuiltinSymbols.v128_max, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_max_u: return deferASM(BuiltinSymbols.v128_max, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_avgr_u: return deferASM(BuiltinSymbols.v128_avgr, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i8, operands, Type.i32, reportNode); - case BuiltinSymbols.i8x16_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i8, operands, Type.i32, reportNode); - case BuiltinSymbols.i8x16_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_narrow_i16x8_s: return deferASM(BuiltinSymbols.v128_narrow, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i8x16_narrow_i16x8_u: return deferASM(BuiltinSymbols.v128_narrow, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_extract_lane_s: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.i8, operands, Type.i8, reportNode); + case BuiltinNames.i8x16_extract_lane_u: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.u8, operands, Type.u8, reportNode); + case BuiltinNames.i8x16_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_add: return deferASM(BuiltinNames.v128_add, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_mul: return deferASM(BuiltinNames.v128_mul, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_min_s: return deferASM(BuiltinNames.v128_min, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_min_u: return deferASM(BuiltinNames.v128_min, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_max_s: return deferASM(BuiltinNames.v128_max, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_max_u: return deferASM(BuiltinNames.v128_max, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_avgr_u: return deferASM(BuiltinNames.v128_avgr, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_add_saturate_s: return deferASM(BuiltinNames.v128_add_saturate, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_add_saturate_u: return deferASM(BuiltinNames.v128_add_saturate, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_sub_saturate_s: return deferASM(BuiltinNames.v128_sub_saturate, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_sub_saturate_u: return deferASM(BuiltinNames.v128_sub_saturate, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_shl: return deferASM(BuiltinNames.v128_shl, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_shr_s: return deferASM(BuiltinNames.v128_shr, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_shr_u: return deferASM(BuiltinNames.v128_shr, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_any_true: return deferASM(BuiltinNames.v128_any_true, compiler, Type.i8, operands, Type.i32, reportNode); + case BuiltinNames.i8x16_all_true: return deferASM(BuiltinNames.v128_all_true, compiler, Type.i8, operands, Type.i32, reportNode); + case BuiltinNames.i8x16_eq: return deferASM(BuiltinNames.v128_eq, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_ne: return deferASM(BuiltinNames.v128_ne, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_lt_s: return deferASM(BuiltinNames.v128_lt, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_lt_u: return deferASM(BuiltinNames.v128_lt, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_le_s: return deferASM(BuiltinNames.v128_le, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_le_u: return deferASM(BuiltinNames.v128_le, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_gt_s: return deferASM(BuiltinNames.v128_gt, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_gt_u: return deferASM(BuiltinNames.v128_gt, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_ge_s: return deferASM(BuiltinNames.v128_ge, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_ge_u: return deferASM(BuiltinNames.v128_ge, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_narrow_i16x8_s: return deferASM(BuiltinNames.v128_narrow, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i8x16_narrow_i16x8_u: return deferASM(BuiltinNames.v128_narrow, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_extract_lane_s: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i16, operands, Type.i16, reportNode); - case BuiltinSymbols.i16x8_extract_lane_u: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.u16, operands, Type.u16, reportNode); - case BuiltinSymbols.i16x8_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_min_s: return deferASM(BuiltinSymbols.v128_min, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_min_u: return deferASM(BuiltinSymbols.v128_min, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_max_s: return deferASM(BuiltinSymbols.v128_max, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_max_u: return deferASM(BuiltinSymbols.v128_max, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_avgr_u: return deferASM(BuiltinSymbols.v128_avgr, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_add_saturate_s: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_add_saturate_u: return deferASM(BuiltinSymbols.v128_add_saturate, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_sub_saturate_s: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_sub_saturate_u: return deferASM(BuiltinSymbols.v128_sub_saturate, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i16, operands, Type.i32, reportNode); - case BuiltinSymbols.i16x8_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i16, operands, Type.i32, reportNode); - case BuiltinSymbols.i16x8_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_narrow_i32x4_s: return deferASM(BuiltinSymbols.v128_narrow, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_narrow_i32x4_u: return deferASM(BuiltinSymbols.v128_narrow, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_widen_low_i8x16_s: return deferASM(BuiltinSymbols.v128_widen_low, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_widen_low_i8x16_u: return deferASM(BuiltinSymbols.v128_widen_low, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_widen_high_i8x16_s: return deferASM(BuiltinSymbols.v128_widen_high, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_widen_high_i8x16_u: return deferASM(BuiltinSymbols.v128_widen_high, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_load8x8_s: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.i16x8_load8x8_u: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_extract_lane_s: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.i16, operands, Type.i16, reportNode); + case BuiltinNames.i16x8_extract_lane_u: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.u16, operands, Type.u16, reportNode); + case BuiltinNames.i16x8_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_add: return deferASM(BuiltinNames.v128_add, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_mul: return deferASM(BuiltinNames.v128_mul, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_min_s: return deferASM(BuiltinNames.v128_min, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_min_u: return deferASM(BuiltinNames.v128_min, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_max_s: return deferASM(BuiltinNames.v128_max, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_max_u: return deferASM(BuiltinNames.v128_max, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_avgr_u: return deferASM(BuiltinNames.v128_avgr, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_add_saturate_s: return deferASM(BuiltinNames.v128_add_saturate, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_add_saturate_u: return deferASM(BuiltinNames.v128_add_saturate, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_sub_saturate_s: return deferASM(BuiltinNames.v128_sub_saturate, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_sub_saturate_u: return deferASM(BuiltinNames.v128_sub_saturate, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_shl: return deferASM(BuiltinNames.v128_shl, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_shr_s: return deferASM(BuiltinNames.v128_shr, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_shr_u: return deferASM(BuiltinNames.v128_shr, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_any_true: return deferASM(BuiltinNames.v128_any_true, compiler, Type.i16, operands, Type.i32, reportNode); + case BuiltinNames.i16x8_all_true: return deferASM(BuiltinNames.v128_all_true, compiler, Type.i16, operands, Type.i32, reportNode); + case BuiltinNames.i16x8_eq: return deferASM(BuiltinNames.v128_eq, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_ne: return deferASM(BuiltinNames.v128_ne, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_lt_s: return deferASM(BuiltinNames.v128_lt, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_lt_u: return deferASM(BuiltinNames.v128_lt, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_le_s: return deferASM(BuiltinNames.v128_le, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_le_u: return deferASM(BuiltinNames.v128_le, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_gt_s: return deferASM(BuiltinNames.v128_gt, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_gt_u: return deferASM(BuiltinNames.v128_gt, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_ge_s: return deferASM(BuiltinNames.v128_ge, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_ge_u: return deferASM(BuiltinNames.v128_ge, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_narrow_i32x4_s: return deferASM(BuiltinNames.v128_narrow, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_narrow_i32x4_u: return deferASM(BuiltinNames.v128_narrow, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_widen_low_i8x16_s: return deferASM(BuiltinNames.v128_widen_low, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_widen_low_i8x16_u: return deferASM(BuiltinNames.v128_widen_low, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_widen_high_i8x16_s: return deferASM(BuiltinNames.v128_widen_high, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_widen_high_i8x16_u: return deferASM(BuiltinNames.v128_widen_high, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_load8x8_s: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.i16x8_load8x8_u: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_min_s: return deferASM(BuiltinSymbols.v128_min, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_min_u: return deferASM(BuiltinSymbols.v128_min, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_max_s: return deferASM(BuiltinSymbols.v128_max, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_max_u: return deferASM(BuiltinSymbols.v128_max, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_dot_i16x8_s: return deferASM(BuiltinSymbols.v128_dot, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i32x4_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i32, operands, Type.i32, reportNode); - case BuiltinSymbols.i32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_lt_s: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_lt_u: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_le_s: return deferASM(BuiltinSymbols.v128_le, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_le_u: return deferASM(BuiltinSymbols.v128_le, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_gt_s: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_gt_u: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_ge_s: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_ge_u: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_trunc_sat_f32x4_s: return deferASM(BuiltinSymbols.v128_trunc_sat, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_trunc_sat_f32x4_u: return deferASM(BuiltinSymbols.v128_trunc_sat, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_widen_low_i16x8_s: return deferASM(BuiltinSymbols.v128_widen_low, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_widen_low_i16x8_u: return deferASM(BuiltinSymbols.v128_widen_low, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_widen_high_i16x8_s: return deferASM(BuiltinSymbols.v128_widen_high, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_widen_high_i16x8_u: return deferASM(BuiltinSymbols.v128_widen_high, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_load16x4_s: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.i16, operands, Type.v128, reportNode); - case BuiltinSymbols.i32x4_load16x4_u: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_extract_lane: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i32x4_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_add: return deferASM(BuiltinNames.v128_add, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_mul: return deferASM(BuiltinNames.v128_mul, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_min_s: return deferASM(BuiltinNames.v128_min, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_min_u: return deferASM(BuiltinNames.v128_min, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_max_s: return deferASM(BuiltinNames.v128_max, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_max_u: return deferASM(BuiltinNames.v128_max, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_dot_i16x8_s: return deferASM(BuiltinNames.v128_dot, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_shl: return deferASM(BuiltinNames.v128_shl, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_shr_s: return deferASM(BuiltinNames.v128_shr, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_shr_u: return deferASM(BuiltinNames.v128_shr, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_any_true: return deferASM(BuiltinNames.v128_any_true, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i32x4_all_true: return deferASM(BuiltinNames.v128_all_true, compiler, Type.i32, operands, Type.i32, reportNode); + case BuiltinNames.i32x4_eq: return deferASM(BuiltinNames.v128_eq, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_ne: return deferASM(BuiltinNames.v128_ne, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_lt_s: return deferASM(BuiltinNames.v128_lt, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_lt_u: return deferASM(BuiltinNames.v128_lt, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_le_s: return deferASM(BuiltinNames.v128_le, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_le_u: return deferASM(BuiltinNames.v128_le, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_gt_s: return deferASM(BuiltinNames.v128_gt, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_gt_u: return deferASM(BuiltinNames.v128_gt, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_ge_s: return deferASM(BuiltinNames.v128_ge, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_ge_u: return deferASM(BuiltinNames.v128_ge, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_trunc_sat_f32x4_s: return deferASM(BuiltinNames.v128_trunc_sat, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_trunc_sat_f32x4_u: return deferASM(BuiltinNames.v128_trunc_sat, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_widen_low_i16x8_s: return deferASM(BuiltinNames.v128_widen_low, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_widen_low_i16x8_u: return deferASM(BuiltinNames.v128_widen_low, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_widen_high_i16x8_s: return deferASM(BuiltinNames.v128_widen_high, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_widen_high_i16x8_u: return deferASM(BuiltinNames.v128_widen_high, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_load16x4_s: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.i16, operands, Type.v128, reportNode); + case BuiltinNames.i32x4_load16x4_u: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.i64, operands, Type.i64, reportNode); - case BuiltinSymbols.i64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_shl: return deferASM(BuiltinSymbols.v128_shl, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_shr_s: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_shr_u: return deferASM(BuiltinSymbols.v128_shr, compiler, Type.u64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_any_true: return deferASM(BuiltinSymbols.v128_any_true, compiler, Type.i64, operands, Type.i32, reportNode); - case BuiltinSymbols.i64x2_all_true: return deferASM(BuiltinSymbols.v128_all_true, compiler, Type.i64, operands, Type.i32, reportNode); - case BuiltinSymbols.i64x2_trunc_sat_f64x2_s: return deferASM(BuiltinSymbols.v128_trunc_sat, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_trunc_sat_f64x2_u: return deferASM(BuiltinSymbols.v128_trunc_sat, compiler, Type.u64, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_load32x2_s: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.i64x2_load32x2_u: return deferASM(BuiltinSymbols.v128_load_ext, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_extract_lane: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.i64, operands, Type.i64, reportNode); + case BuiltinNames.i64x2_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_add: return deferASM(BuiltinNames.v128_add, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_shl: return deferASM(BuiltinNames.v128_shl, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_shr_s: return deferASM(BuiltinNames.v128_shr, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_shr_u: return deferASM(BuiltinNames.v128_shr, compiler, Type.u64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_any_true: return deferASM(BuiltinNames.v128_any_true, compiler, Type.i64, operands, Type.i32, reportNode); + case BuiltinNames.i64x2_all_true: return deferASM(BuiltinNames.v128_all_true, compiler, Type.i64, operands, Type.i32, reportNode); + case BuiltinNames.i64x2_trunc_sat_f64x2_s: return deferASM(BuiltinNames.v128_trunc_sat, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_trunc_sat_f64x2_u: return deferASM(BuiltinNames.v128_trunc_sat, compiler, Type.u64, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_load32x2_s: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.i64x2_load32x2_u: return deferASM(BuiltinNames.v128_load_ext, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f32, operands, Type.f32, reportNode); - case BuiltinSymbols.f32x4_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_convert_i32x4_s: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_convert_i32x4_u: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_qfma: return deferASM(BuiltinSymbols.v128_qfma, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f32x4_qfms: return deferASM(BuiltinSymbols.v128_qfms, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_extract_lane: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.f32, operands, Type.f32, reportNode); + case BuiltinNames.f32x4_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_add: return deferASM(BuiltinNames.v128_add, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_mul: return deferASM(BuiltinNames.v128_mul, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_div: return deferASM(BuiltinNames.v128_div, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_min: return deferASM(BuiltinNames.v128_min, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_max: return deferASM(BuiltinNames.v128_max, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_abs: return deferASM(BuiltinNames.v128_abs, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_sqrt: return deferASM(BuiltinNames.v128_sqrt, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_eq: return deferASM(BuiltinNames.v128_eq, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_ne: return deferASM(BuiltinNames.v128_ne, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_lt: return deferASM(BuiltinNames.v128_lt, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_le: return deferASM(BuiltinNames.v128_le, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_gt: return deferASM(BuiltinNames.v128_gt, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_ge: return deferASM(BuiltinNames.v128_ge, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_convert_i32x4_s: return deferASM(BuiltinNames.v128_convert, compiler, Type.i32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_convert_i32x4_u: return deferASM(BuiltinNames.v128_convert, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_qfma: return deferASM(BuiltinNames.v128_qfma, compiler, Type.f32, operands, Type.v128, reportNode); + case BuiltinNames.f32x4_qfms: return deferASM(BuiltinNames.v128_qfms, compiler, Type.f32, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_splat: return deferASM(BuiltinSymbols.v128_splat, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_extract_lane: return deferASM(BuiltinSymbols.v128_extract_lane, compiler, Type.f64, operands, Type.f64, reportNode); - case BuiltinSymbols.f64x2_replace_lane: return deferASM(BuiltinSymbols.v128_replace_lane, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_add: return deferASM(BuiltinSymbols.v128_add, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_sub: return deferASM(BuiltinSymbols.v128_sub, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_mul: return deferASM(BuiltinSymbols.v128_mul, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_div: return deferASM(BuiltinSymbols.v128_div, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_neg: return deferASM(BuiltinSymbols.v128_neg, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_min: return deferASM(BuiltinSymbols.v128_min, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_max: return deferASM(BuiltinSymbols.v128_max, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_abs: return deferASM(BuiltinSymbols.v128_abs, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_sqrt: return deferASM(BuiltinSymbols.v128_sqrt, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_eq: return deferASM(BuiltinSymbols.v128_eq, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_ne: return deferASM(BuiltinSymbols.v128_ne, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_lt: return deferASM(BuiltinSymbols.v128_lt, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_le: return deferASM(BuiltinSymbols.v128_le, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_gt: return deferASM(BuiltinSymbols.v128_gt, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_ge: return deferASM(BuiltinSymbols.v128_ge, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_convert_i64x2_s: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.i64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_convert_i64x2_u: return deferASM(BuiltinSymbols.v128_convert, compiler, Type.u64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_qfma: return deferASM(BuiltinSymbols.v128_qfma, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.f64x2_qfms: return deferASM(BuiltinSymbols.v128_qfms, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_splat: return deferASM(BuiltinNames.v128_splat, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_extract_lane: return deferASM(BuiltinNames.v128_extract_lane, compiler, Type.f64, operands, Type.f64, reportNode); + case BuiltinNames.f64x2_replace_lane: return deferASM(BuiltinNames.v128_replace_lane, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_add: return deferASM(BuiltinNames.v128_add, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_sub: return deferASM(BuiltinNames.v128_sub, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_mul: return deferASM(BuiltinNames.v128_mul, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_div: return deferASM(BuiltinNames.v128_div, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_neg: return deferASM(BuiltinNames.v128_neg, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_min: return deferASM(BuiltinNames.v128_min, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_max: return deferASM(BuiltinNames.v128_max, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_abs: return deferASM(BuiltinNames.v128_abs, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_sqrt: return deferASM(BuiltinNames.v128_sqrt, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_eq: return deferASM(BuiltinNames.v128_eq, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_ne: return deferASM(BuiltinNames.v128_ne, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_lt: return deferASM(BuiltinNames.v128_lt, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_le: return deferASM(BuiltinNames.v128_le, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_gt: return deferASM(BuiltinNames.v128_gt, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_ge: return deferASM(BuiltinNames.v128_ge, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_convert_i64x2_s: return deferASM(BuiltinNames.v128_convert, compiler, Type.i64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_convert_i64x2_u: return deferASM(BuiltinNames.v128_convert, compiler, Type.u64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_qfma: return deferASM(BuiltinNames.v128_qfma, compiler, Type.f64, operands, Type.v128, reportNode); + case BuiltinNames.f64x2_qfms: return deferASM(BuiltinNames.v128_qfms, compiler, Type.f64, operands, Type.v128, reportNode); - case BuiltinSymbols.v8x16_shuffle: return deferASM(BuiltinSymbols.v128_shuffle, compiler, Type.i8, operands, Type.v128, reportNode); - case BuiltinSymbols.v8x16_swizzle: return deferASM(BuiltinSymbols.v128_swizzle, compiler, null, operands, Type.v128, reportNode); - case BuiltinSymbols.v8x16_load_splat: return deferASM(BuiltinSymbols.v128_load_splat, compiler, Type.u8, operands, Type.v128, reportNode); - case BuiltinSymbols.v16x8_load_splat: return deferASM(BuiltinSymbols.v128_load_splat, compiler, Type.u16, operands, Type.v128, reportNode); - case BuiltinSymbols.v32x4_load_splat: return deferASM(BuiltinSymbols.v128_load_splat, compiler, Type.u32, operands, Type.v128, reportNode); - case BuiltinSymbols.v64x2_load_splat: return deferASM(BuiltinSymbols.v128_load_splat, compiler, Type.u64, operands, Type.v128, reportNode); + case BuiltinNames.v8x16_shuffle: return deferASM(BuiltinNames.v128_shuffle, compiler, Type.i8, operands, Type.v128, reportNode); + case BuiltinNames.v8x16_swizzle: return deferASM(BuiltinNames.v128_swizzle, compiler, null, operands, Type.v128, reportNode); + case BuiltinNames.v8x16_load_splat: return deferASM(BuiltinNames.v128_load_splat, compiler, Type.u8, operands, Type.v128, reportNode); + case BuiltinNames.v16x8_load_splat: return deferASM(BuiltinNames.v128_load_splat, compiler, Type.u16, operands, Type.v128, reportNode); + case BuiltinNames.v32x4_load_splat: return deferASM(BuiltinNames.v128_load_splat, compiler, Type.u32, operands, Type.v128, reportNode); + case BuiltinNames.v64x2_load_splat: return deferASM(BuiltinNames.v128_load_splat, compiler, Type.u64, operands, Type.v128, reportNode); } /* tslint:enable:max-line-length */ return 0; @@ -4810,7 +4815,7 @@ export function compileVisitGlobals(compiler: Compiler): void { } } } - module.addFunction(BuiltinSymbols.visit_globals, + module.addFunction(BuiltinNames.visit_globals, NativeType.I32, // cookie NativeType.None, // => void [ nativeSizeType ], @@ -4933,7 +4938,7 @@ export function compileVisitMembers(compiler: Compiler): void { ); relooper.addBranchForSwitch(outer, blocks[blocks.length - 1], []); // default compiler.compileFunction(visitInstance); - module.addFunction(BuiltinSymbols.visit_members, + module.addFunction(BuiltinNames.visit_members, createType([ usizeType.toNativeType(), NativeType.I32 ]), // ref, cookie NativeType.None, // => void [ nativeSizeType ], @@ -4997,9 +5002,9 @@ export function compileRTTI(compiler: Compiler): void { var segment = compiler.addMemorySegment(data); if (usizeType.size == 8) { let offset = segment.offset; - module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, false, module.i64(i64_low(offset), i64_high(offset))); + module.addGlobal(BuiltinNames.rtti_base, NativeType.I64, false, module.i64(i64_low(offset), i64_high(offset))); } else { - module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, false, module.i32(i64_low(segment.offset))); + module.addGlobal(BuiltinNames.rtti_base, NativeType.I32, false, module.i32(i64_low(segment.offset))); } } diff --git a/src/common.ts b/src/common.ts index 600a560fd4..849485c240 100644 --- a/src/common.ts +++ b/src/common.ts @@ -100,8 +100,8 @@ export const LIBRARY_PREFIX = LIBRARY_SUBST + PATH_DELIMITER; /** Path index suffix. */ export const INDEX_SUFFIX = PATH_DELIMITER + "index"; -/** Common compiler symbols. */ -export namespace CommonSymbols { +/** Common names. */ +export namespace CommonNames { // special export const EMPTY = ""; // types diff --git a/src/compiler.ts b/src/compiler.ts index cf27aba958..33852b8cae 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -4,7 +4,7 @@ *//***/ import { - BuiltinSymbols, + BuiltinNames, compileCall as compileBuiltinCall, compileAbort, compileVisitGlobals, @@ -55,7 +55,7 @@ import { STATIC_DELIMITER, GETTER_PREFIX, SETTER_PREFIX, - CommonSymbols, + CommonNames, INDEX_SUFFIX, Feature, Target @@ -275,6 +275,18 @@ export const enum RuntimeFeatures { visitMembers = 1 << 3 } +/** Exported names of compiler-generated elements. */ +export namespace ExportNames { + /** Name of the explicit start function, if applicable. */ + export const start = "_start"; // match WASI + /** Name of the argumentsLength varargs helper global. */ + export const argumentsLength = "__argumentsLength"; + /** Name of the memory instance, if exported. */ + export const memory = "memory"; + /** Name of the table instance, if exported. */ + export const table = "table"; +} + /** Compiler interface. */ export class Compiler extends DiagnosticEmitter { @@ -352,19 +364,19 @@ export class Compiler extends DiagnosticEmitter { program.initialize(options); // set up the main start function - var startFunctionInstance = program.makeNativeFunction("start", new Signature(program, [], Type.void)); - startFunctionInstance.internalName = "start"; + var startFunctionInstance = program.makeNativeFunction(BuiltinNames.start, new Signature(program, [], Type.void)); + startFunctionInstance.internalName = BuiltinNames.start; var startFunctionBody = new Array(); this.currentFlow = startFunctionInstance.flow; this.currentBody = startFunctionBody; // add mutable heap and rtti base dummies if (options.isWasm64) { - module.addGlobal(BuiltinSymbols.heap_base, NativeType.I64, true, module.i64(0)); - module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I64, true, module.i64(0)); + module.addGlobal(BuiltinNames.heap_base, NativeType.I64, true, module.i64(0)); + module.addGlobal(BuiltinNames.rtti_base, NativeType.I64, true, module.i64(0)); } else { - module.addGlobal(BuiltinSymbols.heap_base, NativeType.I32, true, module.i32(0)); - module.addGlobal(BuiltinSymbols.rtti_base, NativeType.I32, true, module.i32(0)); + module.addGlobal(BuiltinNames.heap_base, NativeType.I32, true, module.i32(0)); + module.addGlobal(BuiltinNames.rtti_base, NativeType.I32, true, module.i32(0)); } // compile entry file(s) while traversing reachable elements @@ -382,12 +394,12 @@ export class Compiler extends DiagnosticEmitter { if (!startIsEmpty || explicitStart) { let signature = startFunctionInstance.signature; if (!startIsEmpty && explicitStart) { - module.addGlobal("~started", NativeType.I32, true, module.i32(0)); + module.addGlobal(BuiltinNames.started, NativeType.I32, true, module.i32(0)); startFunctionBody.unshift( module.if( - module.global_get("~started", NativeType.I32), + module.global_get(BuiltinNames.started, NativeType.I32), module.return(), - module.global_set("~started", module.i32(1)) + module.global_set(BuiltinNames.started, module.i32(1)) ) ); } @@ -400,31 +412,31 @@ export class Compiler extends DiagnosticEmitter { ); startFunctionInstance.finalize(module, funcRef); if (!explicitStart) module.setStart(funcRef); - else module.addFunctionExport(startFunctionInstance.internalName, "_start"); + else module.addFunctionExport(startFunctionInstance.internalName, ExportNames.start); } // compile runtime features if (this.runtimeFeatures & RuntimeFeatures.visitGlobals) compileVisitGlobals(this); if (this.runtimeFeatures & RuntimeFeatures.visitMembers) compileVisitMembers(this); - module.removeGlobal(BuiltinSymbols.rtti_base); + module.removeGlobal(BuiltinNames.rtti_base); if (this.runtimeFeatures & RuntimeFeatures.RTTI) compileRTTI(this); // update the heap base pointer var memoryOffset = this.memoryOffset; memoryOffset = i64_align(memoryOffset, options.usizeType.byteSize); this.memoryOffset = memoryOffset; - module.removeGlobal(BuiltinSymbols.heap_base); + module.removeGlobal(BuiltinNames.heap_base); if (this.runtimeFeatures & RuntimeFeatures.HEAP) { if (options.isWasm64) { module.addGlobal( - BuiltinSymbols.heap_base, + BuiltinNames.heap_base, NativeType.I64, false, module.i64(i64_low(memoryOffset), i64_high(memoryOffset)) ); } else { module.addGlobal( - BuiltinSymbols.heap_base, + BuiltinNames.heap_base, NativeType.I32, false, module.i32(i64_low(memoryOffset)) @@ -441,7 +453,7 @@ export class Compiler extends DiagnosticEmitter { isSharedMemory ? options.sharedMemory : Module.UNLIMITED_MEMORY, this.memorySegments, options.target, - "memory", + ExportNames.memory, isSharedMemory ); @@ -454,7 +466,7 @@ export class Compiler extends DiagnosticEmitter { // import and/or export table if requested (default table is named '0' by Binaryen) if (options.importTable) module.addTableImport("0", "env", "table"); - if (options.exportTable) module.addTableExport("0", "table"); + if (options.exportTable) module.addTableExport("0", ExportNames.table); // set up module exports for (let file of this.program.filesByName.values()) { @@ -839,8 +851,8 @@ export class Compiler extends DiagnosticEmitter { // Handle ambient builtins like '__heap_base' that need to be resolved but are added explicitly if (global.is(CommonFlags.AMBIENT) && global.hasDecorator(DecoratorFlags.BUILTIN)) { - if (global.internalName == BuiltinSymbols.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP; - else if (global.internalName == BuiltinSymbols.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI; + if (global.internalName == BuiltinNames.heap_base) this.runtimeFeatures |= RuntimeFeatures.HEAP; + else if (global.internalName == BuiltinNames.rtti_base) this.runtimeFeatures |= RuntimeFeatures.RTTI; return true; } @@ -1251,7 +1263,7 @@ export class Compiler extends DiagnosticEmitter { let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); if (!flow.is(FlowFlags.TERMINATES)) { - let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); + let thisLocal = assert(flow.lookupLocal(CommonNames.this_)); // if `this` wasn't accessed before, allocate if necessary and initialize `this` if (!flow.is(FlowFlags.ALLOCATES)) { @@ -4280,7 +4292,7 @@ export class Compiler extends DiagnosticEmitter { rightExpr = this.compileExpression(right, Type.f32, Constraints.CONV_IMPLICIT); rightType = this.currentType; if (!(instance = this.f32PowInstance)) { - let namespace = this.program.lookupGlobal(CommonSymbols.Mathf); + let namespace = this.program.lookupGlobal(CommonNames.Mathf); if (!namespace) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4289,7 +4301,7 @@ export class Compiler extends DiagnosticEmitter { expr = module.unreachable(); break; } - let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null; + let prototype = namespace.members ? namespace.members.get(CommonNames.pow) : null; if (!prototype) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4314,7 +4326,7 @@ export class Compiler extends DiagnosticEmitter { rightExpr = this.compileExpression(right, Type.f64, Constraints.CONV_IMPLICIT); rightType = this.currentType; if (!(instance = this.f64PowInstance)) { - let namespace = this.program.lookupGlobal(CommonSymbols.Math); + let namespace = this.program.lookupGlobal(CommonNames.Math); if (!namespace) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4323,7 +4335,7 @@ export class Compiler extends DiagnosticEmitter { expr = module.unreachable(); break; } - let prototype = namespace.members ? namespace.members.get(CommonSymbols.pow) : null; + let prototype = namespace.members ? namespace.members.get(CommonNames.pow) : null; if (!prototype) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4556,7 +4568,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.F32: { let instance = this.f32ModInstance; if (!instance) { - let namespace = this.program.lookupGlobal(CommonSymbols.Mathf); + let namespace = this.program.lookupGlobal(CommonNames.Mathf); if (!namespace) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4565,7 +4577,7 @@ export class Compiler extends DiagnosticEmitter { expr = module.unreachable(); break; } - let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null; + let prototype = namespace.members ? namespace.members.get(CommonNames.mod) : null; if (!prototype) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4587,7 +4599,7 @@ export class Compiler extends DiagnosticEmitter { case TypeKind.F64: { let instance = this.f64ModInstance; if (!instance) { - let namespace = this.program.lookupGlobal(CommonSymbols.Math); + let namespace = this.program.lookupGlobal(CommonNames.Math); if (!namespace) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -4596,7 +4608,7 @@ export class Compiler extends DiagnosticEmitter { expr = module.unreachable(); break; } - let prototype = namespace.members ? namespace.members.get(CommonSymbols.mod) : null; + let prototype = namespace.members ? namespace.members.get(CommonNames.mod) : null; if (!prototype) { this.error( DiagnosticCode.Cannot_find_name_0, @@ -5922,7 +5934,7 @@ export class Compiler extends DiagnosticEmitter { let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS); let baseClassInstance = assert((classInstance).base); - let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); + let thisLocal = assert(flow.lookupLocal(CommonNames.this_)); let nativeSizeType = this.options.nativeSizeType; // { @@ -6350,13 +6362,13 @@ export class Compiler extends DiagnosticEmitter { if (thisArg) { let classInstance = assert(instance.parent); assert(classInstance.kind == ElementKind.CLASS); let thisType = assert(instance.signature.thisType); - let thisLocal = flow.addScopedLocal(CommonSymbols.this_, thisType, usedLocals); + let thisLocal = flow.addScopedLocal(CommonNames.this_, thisType, usedLocals); // No need to retain `this` as it can't be reassigned and thus can't become prematurely released body.unshift( module.local_set(thisLocal.index, thisArg) ); let baseInstance = (classInstance).base; - if (baseInstance) flow.addScopedAlias(CommonSymbols.super_, baseInstance.type, thisLocal.index); + if (baseInstance) flow.addScopedAlias(CommonNames.super_, baseInstance.type, thisLocal.index); } else { assert(!instance.signature.thisType); } @@ -6488,10 +6500,10 @@ export class Compiler extends DiagnosticEmitter { minArguments ? module.binary( BinaryOp.SubI32, - module.global_get("~argumentsLength", NativeType.I32), + module.global_get(BuiltinNames.argumentsLength, NativeType.I32), module.i32(minArguments) ) - : module.global_get("~argumentsLength", NativeType.I32) + : module.global_get(BuiltinNames.argumentsLength, NativeType.I32) ) ]), module.unreachable() @@ -6550,8 +6562,8 @@ export class Compiler extends DiagnosticEmitter { ensureBuiltinArgumentsLength(): void { if (!this.builtinArgumentsLength) { let module = this.module; - this.builtinArgumentsLength = module.addGlobal("~argumentsLength", NativeType.I32, true, module.i32(0)); - module.addGlobalExport("~argumentsLength", "__argumentsLength"); + this.builtinArgumentsLength = module.addGlobal(BuiltinNames.argumentsLength, NativeType.I32, true, module.i32(0)); + module.addGlobalExport(BuiltinNames.argumentsLength, ExportNames.argumentsLength); } } @@ -6963,7 +6975,7 @@ export class Compiler extends DiagnosticEmitter { } this.ensureBuiltinArgumentsLength(); return module.block(null, [ - module.global_set("~argumentsLength", module.i32(numArguments)), + module.global_set(BuiltinNames.argumentsLength, module.i32(numArguments)), expr ], this.currentType.toNativeType()); } @@ -7060,7 +7072,7 @@ export class Compiler extends DiagnosticEmitter { var returnType = signature.returnType; this.ensureBuiltinArgumentsLength(); var expr = module.block(null, [ - module.global_set("~argumentsLength", // might be calling a trampoline + module.global_set(BuiltinNames.argumentsLength, // might be calling a trampoline module.i32(numArguments) ), module.call_indirect( @@ -7319,7 +7331,7 @@ export class Compiler extends DiagnosticEmitter { } case NodeKind.THIS: { if (actualFunction.is(CommonFlags.INSTANCE)) { - let thisLocal = assert(flow.lookupLocal(CommonSymbols.this_)); + let thisLocal = assert(flow.lookupLocal(CommonNames.this_)); let classInstance = assert(actualFunction.parent); assert(classInstance.kind == ElementKind.CLASS); let nativeSizeType = this.options.nativeSizeType; if (actualFunction.is(CommonFlags.CONSTRUCTOR)) { @@ -7376,7 +7388,7 @@ export class Compiler extends DiagnosticEmitter { } } if (flow.isInline) { - let scopedThis = flow.lookupLocal(CommonSymbols.this_); + let scopedThis = flow.lookupLocal(CommonNames.this_); if (scopedThis) { let scopedThisClass = assert(scopedThis.type.classReference); let base = scopedThisClass.base; @@ -8065,9 +8077,9 @@ export class Compiler extends DiagnosticEmitter { if (baseClass) { let baseCtor = this.ensureConstructor(baseClass, reportNode); instance = new Function( - CommonSymbols.constructor, + CommonNames.constructor, new FunctionPrototype( - CommonSymbols.constructor, + CommonNames.constructor, classInstance, // declaration is important, i.e. to access optional parameter initializers (baseCtor.declaration).clone() @@ -8079,11 +8091,11 @@ export class Compiler extends DiagnosticEmitter { // otherwise make a default constructor } else { instance = new Function( - CommonSymbols.constructor, + CommonNames.constructor, new FunctionPrototype( - CommonSymbols.constructor, + CommonNames.constructor, classInstance, - this.program.makeNativeFunctionDeclaration(CommonSymbols.constructor, + this.program.makeNativeFunctionDeclaration(CommonNames.constructor, CommonFlags.INSTANCE | CommonFlags.CONSTRUCTOR ) ), @@ -9332,7 +9344,7 @@ export class Compiler extends DiagnosticEmitter { var flow = this.currentFlow; var isInline = flow.isInline; var thisLocalIndex = isInline - ? assert(flow.lookupLocal(CommonSymbols.this_)).index + ? assert(flow.lookupLocal(CommonNames.this_)).index : 0; var nativeSizeType = this.options.nativeSizeType; diff --git a/src/program.ts b/src/program.ts index 8a014b3877..d10f11dbac 100644 --- a/src/program.ts +++ b/src/program.ts @@ -13,7 +13,7 @@ import { INNER_DELIMITER, LIBRARY_SUBST, INDEX_SUFFIX, - CommonSymbols, + CommonNames, Feature, Target } from "./common"; @@ -36,6 +36,7 @@ import { } from "./types"; import { + Token, Node, NodeKind, Source, @@ -61,6 +62,7 @@ import { EnumDeclaration, EnumValueDeclaration, ExportMember, + ExportDefaultStatement, ExportStatement, FieldDeclaration, FunctionDeclaration, @@ -72,11 +74,7 @@ import { TypeDeclaration, VariableDeclaration, VariableLikeDeclarationStatement, - VariableStatement, - - ExportDefaultStatement, - Token, - ParameterNode + VariableStatement } from "./ast"; import { @@ -570,7 +568,7 @@ export class Program extends DiagnosticEmitter { null, this.nativeDummySignature || (this.nativeDummySignature = Node.createFunctionType([], Node.createNamedType( // ^ AST signature doesn't really matter, is overridden anyway - Node.createSimpleTypeName(CommonSymbols.void_, range), + Node.createSimpleTypeName(CommonNames.void_, range), null, false, range ), null, false, range) @@ -631,79 +629,79 @@ export class Program extends DiagnosticEmitter { this.options = options; // register native types - this.registerNativeType(CommonSymbols.i8, Type.i8); - this.registerNativeType(CommonSymbols.i16, Type.i16); - this.registerNativeType(CommonSymbols.i32, Type.i32); - this.registerNativeType(CommonSymbols.i64, Type.i64); - this.registerNativeType(CommonSymbols.isize, options.isizeType); - this.registerNativeType(CommonSymbols.u8, Type.u8); - this.registerNativeType(CommonSymbols.u16, Type.u16); - this.registerNativeType(CommonSymbols.u32, Type.u32); - this.registerNativeType(CommonSymbols.u64, Type.u64); - this.registerNativeType(CommonSymbols.usize, options.usizeType); - this.registerNativeType(CommonSymbols.bool, Type.bool); - this.registerNativeType(CommonSymbols.f32, Type.f32); - this.registerNativeType(CommonSymbols.f64, Type.f64); - this.registerNativeType(CommonSymbols.void_, Type.void); - this.registerNativeType(CommonSymbols.number, Type.f64); // alias - this.registerNativeType(CommonSymbols.boolean, Type.bool); // alias - this.nativeFile.add(CommonSymbols.native, new TypeDefinition( - CommonSymbols.native, + this.registerNativeType(CommonNames.i8, Type.i8); + this.registerNativeType(CommonNames.i16, Type.i16); + this.registerNativeType(CommonNames.i32, Type.i32); + this.registerNativeType(CommonNames.i64, Type.i64); + this.registerNativeType(CommonNames.isize, options.isizeType); + this.registerNativeType(CommonNames.u8, Type.u8); + this.registerNativeType(CommonNames.u16, Type.u16); + this.registerNativeType(CommonNames.u32, Type.u32); + this.registerNativeType(CommonNames.u64, Type.u64); + this.registerNativeType(CommonNames.usize, options.usizeType); + this.registerNativeType(CommonNames.bool, Type.bool); + this.registerNativeType(CommonNames.f32, Type.f32); + this.registerNativeType(CommonNames.f64, Type.f64); + this.registerNativeType(CommonNames.void_, Type.void); + this.registerNativeType(CommonNames.number, Type.f64); // alias + this.registerNativeType(CommonNames.boolean, Type.bool); // alias + this.nativeFile.add(CommonNames.native, new TypeDefinition( + CommonNames.native, this.nativeFile, - this.makeNativeTypeDeclaration(CommonSymbols.native, CommonFlags.EXPORT | CommonFlags.GENERIC), + this.makeNativeTypeDeclaration(CommonNames.native, CommonFlags.EXPORT | CommonFlags.GENERIC), DecoratorFlags.BUILTIN )); - this.nativeFile.add(CommonSymbols.indexof, new TypeDefinition( - CommonSymbols.indexof, + this.nativeFile.add(CommonNames.indexof, new TypeDefinition( + CommonNames.indexof, this.nativeFile, - this.makeNativeTypeDeclaration(CommonSymbols.indexof, CommonFlags.EXPORT | CommonFlags.GENERIC), + this.makeNativeTypeDeclaration(CommonNames.indexof, CommonFlags.EXPORT | CommonFlags.GENERIC), DecoratorFlags.BUILTIN )); - this.nativeFile.add(CommonSymbols.valueof, new TypeDefinition( - CommonSymbols.valueof, + this.nativeFile.add(CommonNames.valueof, new TypeDefinition( + CommonNames.valueof, this.nativeFile, - this.makeNativeTypeDeclaration(CommonSymbols.valueof, CommonFlags.EXPORT | CommonFlags.GENERIC), + this.makeNativeTypeDeclaration(CommonNames.valueof, CommonFlags.EXPORT | CommonFlags.GENERIC), DecoratorFlags.BUILTIN )); - this.nativeFile.add(CommonSymbols.returnof, new TypeDefinition( - CommonSymbols.returnof, + this.nativeFile.add(CommonNames.returnof, new TypeDefinition( + CommonNames.returnof, this.nativeFile, - this.makeNativeTypeDeclaration(CommonSymbols.returnof, CommonFlags.EXPORT | CommonFlags.GENERIC), + this.makeNativeTypeDeclaration(CommonNames.returnof, CommonFlags.EXPORT | CommonFlags.GENERIC), DecoratorFlags.BUILTIN )); - if (options.hasFeature(Feature.SIMD)) this.registerNativeType(CommonSymbols.v128, Type.v128); - if (options.hasFeature(Feature.REFERENCE_TYPES)) this.registerNativeType(CommonSymbols.anyref, Type.anyref); + if (options.hasFeature(Feature.SIMD)) this.registerNativeType(CommonNames.v128, Type.v128); + if (options.hasFeature(Feature.REFERENCE_TYPES)) this.registerNativeType(CommonNames.anyref, Type.anyref); // register compiler hints - this.registerConstantInteger(CommonSymbols.ASC_TARGET, Type.i32, + this.registerConstantInteger(CommonNames.ASC_TARGET, Type.i32, i64_new(options.isWasm64 ? Target.WASM64 : Target.WASM32)); - this.registerConstantInteger(CommonSymbols.ASC_NO_ASSERT, Type.bool, + this.registerConstantInteger(CommonNames.ASC_NO_ASSERT, Type.bool, i64_new(options.noAssert ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_MEMORY_BASE, Type.i32, + this.registerConstantInteger(CommonNames.ASC_MEMORY_BASE, Type.i32, i64_new(options.memoryBase, 0)); - this.registerConstantInteger(CommonSymbols.ASC_OPTIMIZE_LEVEL, Type.i32, + this.registerConstantInteger(CommonNames.ASC_OPTIMIZE_LEVEL, Type.i32, i64_new(options.optimizeLevelHint, 0)); - this.registerConstantInteger(CommonSymbols.ASC_SHRINK_LEVEL, Type.i32, + this.registerConstantInteger(CommonNames.ASC_SHRINK_LEVEL, Type.i32, i64_new(options.shrinkLevelHint, 0)); // register feature hints - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIGN_EXTENSION, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_SIGN_EXTENSION, Type.bool, i64_new(options.hasFeature(Feature.SIGN_EXTENSION) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_MUTABLE_GLOBALS, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_MUTABLE_GLOBALS, Type.bool, i64_new(options.hasFeature(Feature.MUTABLE_GLOBALS) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_NONTRAPPING_F2I, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_NONTRAPPING_F2I, Type.bool, i64_new(options.hasFeature(Feature.NONTRAPPING_F2I) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_BULK_MEMORY, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_BULK_MEMORY, Type.bool, i64_new(options.hasFeature(Feature.BULK_MEMORY) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_SIMD, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_SIMD, Type.bool, i64_new(options.hasFeature(Feature.SIMD) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_THREADS, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_THREADS, Type.bool, i64_new(options.hasFeature(Feature.THREADS) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_EXCEPTION_HANDLING, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_EXCEPTION_HANDLING, Type.bool, i64_new(options.hasFeature(Feature.EXCEPTION_HANDLING) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_TAIL_CALLS, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_TAIL_CALLS, Type.bool, i64_new(options.hasFeature(Feature.TAIL_CALLS) ? 1 : 0, 0)); - this.registerConstantInteger(CommonSymbols.ASC_FEATURE_REFERENCE_TYPES, Type.bool, + this.registerConstantInteger(CommonNames.ASC_FEATURE_REFERENCE_TYPES, Type.bool, i64_new(options.hasFeature(Feature.REFERENCE_TYPES) ? 1 : 0, 0)); // remember deferred elements @@ -868,42 +866,42 @@ export class Program extends DiagnosticEmitter { // register ArrayBuffer (id=0), String (id=1), ArrayBufferView (id=2) assert(this.nextClassId == 0); - this.arrayBufferInstance = this.requireClass(CommonSymbols.ArrayBuffer); + this.arrayBufferInstance = this.requireClass(CommonNames.ArrayBuffer); assert(this.arrayBufferInstance.id == 0); - this.stringInstance = this.requireClass(CommonSymbols.String); + this.stringInstance = this.requireClass(CommonNames.String); assert(this.stringInstance.id == 1); - this.arrayBufferViewInstance = this.requireClass(CommonSymbols.ArrayBufferView); + this.arrayBufferViewInstance = this.requireClass(CommonNames.ArrayBufferView); assert(this.arrayBufferViewInstance.id == 2); // register classes backing basic types - this.registerWrapperClass(Type.i8, CommonSymbols.I8); - this.registerWrapperClass(Type.i16, CommonSymbols.I16); - this.registerWrapperClass(Type.i32, CommonSymbols.I32); - this.registerWrapperClass(Type.i64, CommonSymbols.I64); - this.registerWrapperClass(options.isizeType, CommonSymbols.Isize); - this.registerWrapperClass(Type.u8, CommonSymbols.U8); - this.registerWrapperClass(Type.u16, CommonSymbols.U16); - this.registerWrapperClass(Type.u32, CommonSymbols.U32); - this.registerWrapperClass(Type.u64, CommonSymbols.U64); - this.registerWrapperClass(options.usizeType, CommonSymbols.Usize); - this.registerWrapperClass(Type.bool, CommonSymbols.Bool); - this.registerWrapperClass(Type.f32, CommonSymbols.F32); - this.registerWrapperClass(Type.f64, CommonSymbols.F64); - if (options.hasFeature(Feature.SIMD)) this.registerWrapperClass(Type.v128, CommonSymbols.V128); - if (options.hasFeature(Feature.REFERENCE_TYPES)) this.registerWrapperClass(Type.anyref, CommonSymbols.Anyref); + this.registerWrapperClass(Type.i8, CommonNames.I8); + this.registerWrapperClass(Type.i16, CommonNames.I16); + this.registerWrapperClass(Type.i32, CommonNames.I32); + this.registerWrapperClass(Type.i64, CommonNames.I64); + this.registerWrapperClass(options.isizeType, CommonNames.Isize); + this.registerWrapperClass(Type.u8, CommonNames.U8); + this.registerWrapperClass(Type.u16, CommonNames.U16); + this.registerWrapperClass(Type.u32, CommonNames.U32); + this.registerWrapperClass(Type.u64, CommonNames.U64); + this.registerWrapperClass(options.usizeType, CommonNames.Usize); + this.registerWrapperClass(Type.bool, CommonNames.Bool); + this.registerWrapperClass(Type.f32, CommonNames.F32); + this.registerWrapperClass(Type.f64, CommonNames.F64); + if (options.hasFeature(Feature.SIMD)) this.registerWrapperClass(Type.v128, CommonNames.V128); + if (options.hasFeature(Feature.REFERENCE_TYPES)) this.registerWrapperClass(Type.anyref, CommonNames.Anyref); // register views but don't instantiate them yet - this.i8ArrayPrototype = this.require(CommonSymbols.Int8Array, ElementKind.CLASS_PROTOTYPE); - this.i16ArrayPrototype = this.require(CommonSymbols.Int16Array, ElementKind.CLASS_PROTOTYPE); - this.i32ArrayPrototype = this.require(CommonSymbols.Int32Array, ElementKind.CLASS_PROTOTYPE); - this.i64ArrayPrototype = this.require(CommonSymbols.Int64Array, ElementKind.CLASS_PROTOTYPE); - this.u8ArrayPrototype = this.require(CommonSymbols.Uint8Array, ElementKind.CLASS_PROTOTYPE); - this.u8ClampedArrayPrototype = this.require(CommonSymbols.Uint8ClampedArray, ElementKind.CLASS_PROTOTYPE); - this.u16ArrayPrototype = this.require(CommonSymbols.Uint16Array, ElementKind.CLASS_PROTOTYPE); - this.u32ArrayPrototype = this.require(CommonSymbols.Uint32Array, ElementKind.CLASS_PROTOTYPE); - this.u64ArrayPrototype = this.require(CommonSymbols.Uint64Array, ElementKind.CLASS_PROTOTYPE); - this.f32ArrayPrototype = this.require(CommonSymbols.Float32Array, ElementKind.CLASS_PROTOTYPE); - this.f64ArrayPrototype = this.require(CommonSymbols.Float64Array, ElementKind.CLASS_PROTOTYPE); + this.i8ArrayPrototype = this.require(CommonNames.Int8Array, ElementKind.CLASS_PROTOTYPE); + this.i16ArrayPrototype = this.require(CommonNames.Int16Array, ElementKind.CLASS_PROTOTYPE); + this.i32ArrayPrototype = this.require(CommonNames.Int32Array, ElementKind.CLASS_PROTOTYPE); + this.i64ArrayPrototype = this.require(CommonNames.Int64Array, ElementKind.CLASS_PROTOTYPE); + this.u8ArrayPrototype = this.require(CommonNames.Uint8Array, ElementKind.CLASS_PROTOTYPE); + this.u8ClampedArrayPrototype = this.require(CommonNames.Uint8ClampedArray, ElementKind.CLASS_PROTOTYPE); + this.u16ArrayPrototype = this.require(CommonNames.Uint16Array, ElementKind.CLASS_PROTOTYPE); + this.u32ArrayPrototype = this.require(CommonNames.Uint32Array, ElementKind.CLASS_PROTOTYPE); + this.u64ArrayPrototype = this.require(CommonNames.Uint64Array, ElementKind.CLASS_PROTOTYPE); + this.f32ArrayPrototype = this.require(CommonNames.Float32Array, ElementKind.CLASS_PROTOTYPE); + this.f64ArrayPrototype = this.require(CommonNames.Float64Array, ElementKind.CLASS_PROTOTYPE); // resolve base prototypes of derived classes var resolver = this.resolver; @@ -961,21 +959,21 @@ export class Program extends DiagnosticEmitter { } // register stdlib components - this.arrayPrototype = this.require(CommonSymbols.Array, ElementKind.CLASS_PROTOTYPE); - this.fixedArrayPrototype = this.require(CommonSymbols.FixedArray, ElementKind.CLASS_PROTOTYPE); - this.setPrototype = this.require(CommonSymbols.Set, ElementKind.CLASS_PROTOTYPE); - this.mapPrototype = this.require(CommonSymbols.Map, ElementKind.CLASS_PROTOTYPE); - this.abortInstance = this.lookupFunction(CommonSymbols.abort); // can be disabled - this.allocInstance = this.requireFunction(CommonSymbols.alloc); - this.reallocInstance = this.requireFunction(CommonSymbols.realloc); - this.freeInstance = this.requireFunction(CommonSymbols.free); - this.retainInstance = this.requireFunction(CommonSymbols.retain); - this.releaseInstance = this.requireFunction(CommonSymbols.release); - this.collectInstance = this.requireFunction(CommonSymbols.collect); - this.typeinfoInstance = this.requireFunction(CommonSymbols.typeinfo); - this.instanceofInstance = this.requireFunction(CommonSymbols.instanceof_); - this.visitInstance = this.requireFunction(CommonSymbols.visit); - this.allocArrayInstance = this.requireFunction(CommonSymbols.allocArray); + this.arrayPrototype = this.require(CommonNames.Array, ElementKind.CLASS_PROTOTYPE); + this.fixedArrayPrototype = this.require(CommonNames.FixedArray, ElementKind.CLASS_PROTOTYPE); + this.setPrototype = this.require(CommonNames.Set, ElementKind.CLASS_PROTOTYPE); + this.mapPrototype = this.require(CommonNames.Map, ElementKind.CLASS_PROTOTYPE); + this.abortInstance = this.lookupFunction(CommonNames.abort); // can be disabled + this.allocInstance = this.requireFunction(CommonNames.alloc); + this.reallocInstance = this.requireFunction(CommonNames.realloc); + this.freeInstance = this.requireFunction(CommonNames.free); + this.retainInstance = this.requireFunction(CommonNames.retain); + this.releaseInstance = this.requireFunction(CommonNames.release); + this.collectInstance = this.requireFunction(CommonNames.collect); + this.typeinfoInstance = this.requireFunction(CommonNames.typeinfo); + this.instanceofInstance = this.requireFunction(CommonNames.instanceof_); + this.visitInstance = this.requireFunction(CommonNames.visit); + this.allocArrayInstance = this.requireFunction(CommonNames.allocArray); // mark module exports, i.e. to apply proper wrapping behavior on the boundaries for (let file of this.filesByName.values()) { @@ -2854,12 +2852,12 @@ export class Function extends TypedElement { let localIndex = 0; if (this.is(CommonFlags.INSTANCE)) { let local = new Local( - CommonSymbols.this_, + CommonNames.this_, localIndex++, assert(signature.thisType), this ); - this.localsByName.set(CommonSymbols.this_, local); + this.localsByName.set(CommonNames.this_, local); this.localsByIndex[local.index] = local; } let parameterTypes = signature.parameterTypes; diff --git a/src/resolver.ts b/src/resolver.ts index 8e84f43da2..39d716ca21 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -31,7 +31,6 @@ import { } from "./program"; import { - FlowFlags, Flow } from "./flow"; @@ -79,7 +78,7 @@ import { import { CommonFlags, - CommonSymbols + CommonNames } from "./common"; import { @@ -93,7 +92,7 @@ import { } from "./tokenizer"; import { - BuiltinSymbols + BuiltinNames } from "./builtins"; /** Indicates whether errors are reported or not. */ @@ -278,10 +277,10 @@ export class Resolver extends DiagnosticEmitter { // Handle special built-in types if (isSimpleType) { switch (nameNode.identifier.text) { - case CommonSymbols.native: return this.resolveBuiltinNativeType(node, ctxElement, ctxTypes, reportMode); - case CommonSymbols.indexof: return this.resolveBuiltinIndexofType(node, ctxElement, ctxTypes, reportMode); - case CommonSymbols.valueof: return this.resolveBuiltinValueofType(node, ctxElement, ctxTypes, reportMode); - case CommonSymbols.returnof: return this.resolveBuiltinReturnTypeType(node, ctxElement, ctxTypes, reportMode); + case CommonNames.native: return this.resolveBuiltinNativeType(node, ctxElement, ctxTypes, reportMode); + case CommonNames.indexof: return this.resolveBuiltinIndexofType(node, ctxElement, ctxTypes, reportMode); + case CommonNames.valueof: return this.resolveBuiltinValueofType(node, ctxElement, ctxTypes, reportMode); + case CommonNames.returnof: return this.resolveBuiltinReturnTypeType(node, ctxElement, ctxTypes, reportMode); } } @@ -2044,7 +2043,7 @@ export class Resolver extends DiagnosticEmitter { reportMode: ReportMode = ReportMode.REPORT ): Element | null { if (ctxFlow.isInline) { - let thisLocal = ctxFlow.lookupLocal(CommonSymbols.this_); + let thisLocal = ctxFlow.lookupLocal(CommonNames.this_); if (thisLocal) { this.currentThisExpression = null; this.currentElementExpression = null; @@ -2103,7 +2102,7 @@ export class Resolver extends DiagnosticEmitter { reportMode: ReportMode = ReportMode.REPORT ): Element | null { if (ctxFlow.isInline) { - let superLocal = ctxFlow.lookupLocal(CommonSymbols.super_); + let superLocal = ctxFlow.lookupLocal(CommonNames.super_); if (superLocal) { this.currentThisExpression = null; this.currentElementExpression = null; @@ -2271,7 +2270,7 @@ export class Resolver extends DiagnosticEmitter { case ElementKind.FUNCTION_PROTOTYPE: { // `unchecked` behaves like parenthesized if ( - (target).internalName == BuiltinSymbols.unchecked && + (target).internalName == BuiltinNames.unchecked && node.arguments.length > 0 ) { return this.resolveExpression(node.arguments[0], ctxFlow, ctxType, reportMode); @@ -2576,10 +2575,10 @@ export class Resolver extends DiagnosticEmitter { reportMode ); if (!thisType) return null; - ctxTypes.set(CommonSymbols.this_, thisType); + ctxTypes.set(CommonNames.this_, thisType); } else if (classInstance) { thisType = classInstance.type; - ctxTypes.set(CommonSymbols.this_, thisType); + ctxTypes.set(CommonNames.this_, thisType); } // resolve parameter types @@ -2934,7 +2933,7 @@ export class Resolver extends DiagnosticEmitter { // Link _own_ constructor if present { - let ctorPrototype = instance.lookupInSelf(CommonSymbols.constructor); + let ctorPrototype = instance.lookupInSelf(CommonNames.constructor); if (ctorPrototype && ctorPrototype.parent === instance) { assert(ctorPrototype.kind == ElementKind.FUNCTION_PROTOTYPE); let ctorInstance = this.resolveFunction( diff --git a/tests/compiler/abi.optimized.wat b/tests/compiler/abi.optimized.wat index 679ed41acd..0bc7a7ba97 100644 --- a/tests/compiler/abi.optimized.wat +++ b/tests/compiler/abi.optimized.wat @@ -9,11 +9,11 @@ (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exported)) (export "exportedInternal" (func $abi/exported)) - (start $start) + (start $~start) (func $abi/exported (; 0 ;) (result i32) i32.const -128 ) - (func $start (; 1 ;) + (func $~start (; 1 ;) i32.const 1 global.set $abi/condition i32.const 0 diff --git a/tests/compiler/abi.untouched.wat b/tests/compiler/abi.untouched.wat index 6235623f6f..c5e8de996a 100644 --- a/tests/compiler/abi.untouched.wat +++ b/tests/compiler/abi.untouched.wat @@ -12,7 +12,7 @@ (export "exported" (func $abi/exported)) (export "exportedExported" (func $abi/exportedExported)) (export "exportedInternal" (func $abi/exportedInternal)) - (start $start) + (start $~start) (func $abi/internal (; 1 ;) (result i32) i32.const 128 ) @@ -198,7 +198,7 @@ i32.const 24 i32.shr_s ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:abi ) ) diff --git a/tests/compiler/asc-constants.untouched.wat b/tests/compiler/asc-constants.untouched.wat index e7aa8ddedb..c49a7eee33 100644 --- a/tests/compiler/asc-constants.untouched.wat +++ b/tests/compiler/asc-constants.untouched.wat @@ -17,7 +17,7 @@ (global $~lib/ASC_FEATURE_TAIL_CALLS i32 (i32.const 0)) (global $~lib/ASC_FEATURE_REFERENCE_TYPES i32 (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:asc-constants (; 0 ;) i32.const 0 drop @@ -48,7 +48,7 @@ i32.const 0 drop ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:asc-constants ) ) diff --git a/tests/compiler/binary.optimized.wat b/tests/compiler/binary.optimized.wat index 3d16cdcb3c..49eac7eb8c 100644 --- a/tests/compiler/binary.optimized.wat +++ b/tests/compiler/binary.optimized.wat @@ -17,7 +17,7 @@ (global $binary/f (mut f32) (f32.const 0)) (global $binary/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/math/NativeMath.pow (; 0 ;) (param $0 f64) (result f64) (local $1 i64) (local $2 i32) @@ -895,7 +895,7 @@ call $~lib/math/NativeMath.pow global.set $binary/F ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:binary ) ) diff --git a/tests/compiler/binary.untouched.wat b/tests/compiler/binary.untouched.wat index 035d085fb8..ae9cff6b58 100644 --- a/tests/compiler/binary.untouched.wat +++ b/tests/compiler/binary.untouched.wat @@ -29,7 +29,7 @@ (global $~lib/util/math/exp2f_data_tab i32 (i32.const 6848)) (global $binary/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/math/NativeMath.pow (; 0 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 f64) (local $3 f64) @@ -2595,7 +2595,7 @@ call $~lib/math/NativeMath.pow global.set $binary/F ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:binary ) ) diff --git a/tests/compiler/bool.untouched.wat b/tests/compiler/bool.untouched.wat index 6a38a83926..99af3c05b9 100644 --- a/tests/compiler/bool.untouched.wat +++ b/tests/compiler/bool.untouched.wat @@ -13,7 +13,7 @@ (global $bool/F (mut f64) (f64.const 2)) (global $bool/uu (mut i32) (i32.const 2)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:bool (; 1 ;) global.get $bool/i i32.const 0 @@ -114,7 +114,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:bool ) ) diff --git a/tests/compiler/builtins.optimized.wat b/tests/compiler/builtins.optimized.wat index 42d37e62d5..8f2cbd9da1 100644 --- a/tests/compiler/builtins.optimized.wat +++ b/tests/compiler/builtins.optimized.wat @@ -41,7 +41,7 @@ (global $builtins/s (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "test" (func $start:builtins~anonymous|0)) - (start $start) + (start $~start) (func $~lib/atomics/Atomics.isLockFree (; 2 ;) (param $0 i32) (result i32) i32.const 1 local.get $0 @@ -849,7 +849,7 @@ unreachable end ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:builtins ) ) diff --git a/tests/compiler/builtins.untouched.wat b/tests/compiler/builtins.untouched.wat index d0123a1a23..fc9bc709a1 100644 --- a/tests/compiler/builtins.untouched.wat +++ b/tests/compiler/builtins.untouched.wat @@ -76,7 +76,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) (export "test" (func $builtins/test)) - (start $start) + (start $~start) (func $~lib/atomics/Atomics.isLockFree (; 2 ;) (param $0 i32) (result i32) local.get $0 i32.const 1 @@ -1872,7 +1872,7 @@ (func $builtins/test (; 11 ;) nop ) - (func $start (; 12 ;) + (func $~start (; 12 ;) call $start:builtins ) ) diff --git a/tests/compiler/call-inferred.optimized.wat b/tests/compiler/call-inferred.optimized.wat index 2ecddfff81..3430c3916c 100644 --- a/tests/compiler/call-inferred.optimized.wat +++ b/tests/compiler/call-inferred.optimized.wat @@ -5,8 +5,8 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 0 global.set $~argumentsLength ) diff --git a/tests/compiler/call-inferred.untouched.wat b/tests/compiler/call-inferred.untouched.wat index 3c778a2b32..6bee176ee8 100644 --- a/tests/compiler/call-inferred.untouched.wat +++ b/tests/compiler/call-inferred.untouched.wat @@ -11,7 +11,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $call-inferred/foo (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -95,7 +95,7 @@ unreachable end ) - (func $start (; 7 ;) + (func $~start (; 7 ;) call $start:call-inferred ) ) diff --git a/tests/compiler/call-optional.optimized.wat b/tests/compiler/call-optional.optimized.wat index cc291a3dbd..c98b844afc 100644 --- a/tests/compiler/call-optional.optimized.wat +++ b/tests/compiler/call-optional.optimized.wat @@ -8,7 +8,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $call-optional/opt (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $2 local.get $0 @@ -131,7 +131,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:call-optional ) ) diff --git a/tests/compiler/call-optional.untouched.wat b/tests/compiler/call-optional.untouched.wat index 8b25a80acb..113c73360b 100644 --- a/tests/compiler/call-optional.untouched.wat +++ b/tests/compiler/call-optional.untouched.wat @@ -11,7 +11,7 @@ (global $call-optional/optIndirect (mut i32) (i32.const 1)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $call-optional/opt (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) local.get $0 local.get $1 @@ -147,7 +147,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:call-optional ) ) diff --git a/tests/compiler/call-super.optimized.wat b/tests/compiler/call-super.optimized.wat index 7950445536..2e9dd95f41 100644 --- a/tests/compiler/call-super.optimized.wat +++ b/tests/compiler/call-super.optimized.wat @@ -11,7 +11,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -419,7 +419,7 @@ unreachable end ) - (func $start (; 14 ;) + (func $~start (; 14 ;) i32.const 64 global.set $~lib/rt/stub/startOffset i32.const 64 diff --git a/tests/compiler/call-super.untouched.wat b/tests/compiler/call-super.untouched.wat index 934a6d39cd..0b5c6f6d2e 100644 --- a/tests/compiler/call-super.untouched.wat +++ b/tests/compiler/call-super.untouched.wat @@ -12,7 +12,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 60)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -554,7 +554,7 @@ call $call-super/test4 call $call-super/test5 ) - (func $start (; 21 ;) + (func $~start (; 21 ;) call $start:call-super ) ) diff --git a/tests/compiler/class-overloading.untouched.wat b/tests/compiler/class-overloading.untouched.wat index b77dccab36..3044d0fbe1 100644 --- a/tests/compiler/class-overloading.untouched.wat +++ b/tests/compiler/class-overloading.untouched.wat @@ -6,7 +6,7 @@ (table $0 1 funcref) (export "memory" (memory $0)) (export "test" (func $class-overloading/test)) - (start $start) + (start $~start) (func $~lib/rt/stub/__retain (; 0 ;) (param $0 i32) (result i32) local.get $0 ) @@ -29,7 +29,7 @@ i32.const 0 call $class-overloading/test ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:class-overloading ) ) diff --git a/tests/compiler/class-static-function.optimized.wat b/tests/compiler/class-static-function.optimized.wat index a45f734c96..c49b506f0d 100644 --- a/tests/compiler/class-static-function.optimized.wat +++ b/tests/compiler/class-static-function.optimized.wat @@ -5,8 +5,8 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 0 global.set $~argumentsLength ) diff --git a/tests/compiler/class-static-function.untouched.wat b/tests/compiler/class-static-function.untouched.wat index c576144962..0081860a1b 100644 --- a/tests/compiler/class-static-function.untouched.wat +++ b/tests/compiler/class-static-function.untouched.wat @@ -11,7 +11,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $class-static-function/Example.staticFunc (; 1 ;) (result i32) i32.const 42 ) @@ -36,7 +36,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:class-static-function ) ) diff --git a/tests/compiler/class.untouched.wat b/tests/compiler/class.untouched.wat index bbb503e83d..03e6cd2052 100644 --- a/tests/compiler/class.untouched.wat +++ b/tests/compiler/class.untouched.wat @@ -11,7 +11,7 @@ (global $class/Animal.ONE (mut i32) (i32.const 1)) (export "memory" (memory $0)) (export "test" (func $class/test)) - (start $start) + (start $~start) (func $class/Animal.add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -114,7 +114,7 @@ call $~lib/rt/stub/__release local.get $3 ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:class ) ) diff --git a/tests/compiler/comma.optimized.wat b/tests/compiler/comma.optimized.wat index c0cbdeea75..dc023c9b58 100644 --- a/tests/compiler/comma.optimized.wat +++ b/tests/compiler/comma.optimized.wat @@ -7,7 +7,7 @@ (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:comma (; 1 ;) (local $0 i32) global.get $comma/a @@ -144,7 +144,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:comma ) ) diff --git a/tests/compiler/comma.untouched.wat b/tests/compiler/comma.untouched.wat index 22bedc2e48..bced1ac570 100644 --- a/tests/compiler/comma.untouched.wat +++ b/tests/compiler/comma.untouched.wat @@ -8,7 +8,7 @@ (global $comma/a (mut i32) (i32.const 0)) (global $comma/b (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:comma (; 1 ;) (local $0 i32) (local $1 i32) @@ -181,7 +181,7 @@ i32.const 3 drop ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:comma ) ) diff --git a/tests/compiler/constructor.optimized.wat b/tests/compiler/constructor.optimized.wat index e21a46b416..c6f3d96495 100644 --- a/tests/compiler/constructor.optimized.wat +++ b/tests/compiler/constructor.optimized.wat @@ -16,7 +16,7 @@ (global $constructor/ctorAllocates (mut i32) (i32.const 0)) (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -171,7 +171,7 @@ end global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:constructor ) ) diff --git a/tests/compiler/constructor.untouched.wat b/tests/compiler/constructor.untouched.wat index a8cd22e5b4..e4c615e9a8 100644 --- a/tests/compiler/constructor.untouched.wat +++ b/tests/compiler/constructor.untouched.wat @@ -20,7 +20,7 @@ (global $constructor/ctorConditionallyAllocates (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -319,7 +319,7 @@ call $constructor/CtorConditionallyAllocates#constructor global.set $constructor/ctorConditionallyAllocates ) - (func $start (; 14 ;) + (func $~start (; 14 ;) call $start:constructor ) ) diff --git a/tests/compiler/declare.optimized.wat b/tests/compiler/declare.optimized.wat index 23700c6665..1c82844609 100644 --- a/tests/compiler/declare.optimized.wat +++ b/tests/compiler/declare.optimized.wat @@ -9,7 +9,7 @@ (memory $0 1) (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s") (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:declare (; 3 ;) call $declare/externalFunction global.get $declare/externalConstant @@ -36,7 +36,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:declare ) ) diff --git a/tests/compiler/declare.untouched.wat b/tests/compiler/declare.untouched.wat index 63f604bf37..99b6af48b5 100644 --- a/tests/compiler/declare.untouched.wat +++ b/tests/compiler/declare.untouched.wat @@ -10,7 +10,7 @@ (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00d\00e\00c\00l\00a\00r\00e\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:declare (; 3 ;) call $declare/externalFunction global.get $declare/externalConstant @@ -39,7 +39,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:declare ) ) diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index e53b36150f..bcb288e377 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -8,7 +8,7 @@ (global $do/m (mut i32) (i32.const 0)) (global $do/o (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:do (; 1 ;) (local $0 i32) loop $do-continue|0 @@ -145,7 +145,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:do ) ) diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 87e38962eb..2173d2a41b 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -9,7 +9,7 @@ (global $do/m (mut i32) (i32.const 0)) (global $do/o (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:do (; 1 ;) (local $0 i32) loop $do-continue|0 @@ -169,7 +169,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:do ) ) diff --git a/tests/compiler/enum.optimized.wat b/tests/compiler/enum.optimized.wat index 37ad44198a..4dd89795bb 100644 --- a/tests/compiler/enum.optimized.wat +++ b/tests/compiler/enum.optimized.wat @@ -60,8 +60,8 @@ (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 0 global.set $enum/NonConstant.ZERO i32.const 1 diff --git a/tests/compiler/enum.untouched.wat b/tests/compiler/enum.untouched.wat index 86b3fb1da6..6ff471bb34 100644 --- a/tests/compiler/enum.untouched.wat +++ b/tests/compiler/enum.untouched.wat @@ -63,7 +63,7 @@ (export "SelfReference.ONE" (global $enum/SelfReference.ONE)) (export "SelfReferenceConst.ZERO" (global $enum/SelfReferenceConst.ZERO)) (export "SelfReferenceConst.ONE" (global $enum/SelfReferenceConst.ONE)) - (start $start) + (start $~start) (func $enum/getZero (; 0 ;) (result i32) i32.const 0 ) @@ -79,7 +79,7 @@ global.get $enum/NonConstant.ONE drop ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:enum ) ) diff --git a/tests/compiler/exportimport-table.untouched.wat b/tests/compiler/exportimport-table.untouched.wat index b34433f6b3..603e483733 100644 --- a/tests/compiler/exportimport-table.untouched.wat +++ b/tests/compiler/exportimport-table.untouched.wat @@ -6,7 +6,7 @@ (global $exportimport-table/f (mut i32) (i32.const 1)) (export "memory" (memory $0)) (export "table" (table $0)) - (start $start) + (start $~start) (func $start:exportimport-table~anonymous|0 (; 0 ;) nop ) @@ -14,7 +14,7 @@ global.get $exportimport-table/f drop ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:exportimport-table ) ) diff --git a/tests/compiler/exports.optimized.wat b/tests/compiler/exports.optimized.wat index 4881ad327d..1b03e3c08b 100644 --- a/tests/compiler/exports.optimized.wat +++ b/tests/compiler/exports.optimized.wat @@ -46,7 +46,7 @@ (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) (export "vehicles.Car.getNumTires" (func $exports/Car.getNumTires)) (export "outer.inner.a" (global $exports/outer.inner.a)) - (start $start) + (start $~start) (func $exports/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -141,7 +141,7 @@ (func $exports/Car#openDoors (; 7 ;) (param $0 i32) nop ) - (func $start (; 8 ;) + (func $~start (; 8 ;) i32.const 16 global.set $~lib/rt/stub/startOffset i32.const 16 diff --git a/tests/compiler/exports.untouched.wat b/tests/compiler/exports.untouched.wat index 05195d3571..54b1736d9c 100644 --- a/tests/compiler/exports.untouched.wat +++ b/tests/compiler/exports.untouched.wat @@ -48,7 +48,7 @@ (export "vehicles.Car.TIRES" (global $exports/vehicles.Car.TIRES)) (export "vehicles.Car.getNumTires" (func $exports/vehicles.Car.getNumTires)) (export "outer.inner.a" (global $exports/outer.inner.a)) - (start $start) + (start $~start) (func $exports/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -240,7 +240,7 @@ (func $exports/vehicles.Car#openDoors (; 15 ;) (param $0 i32) nop ) - (func $start (; 16 ;) + (func $~start (; 16 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add diff --git a/tests/compiler/extends-baseaggregate.optimized.wat b/tests/compiler/extends-baseaggregate.optimized.wat index cbb8b63494..085388b343 100644 --- a/tests/compiler/extends-baseaggregate.optimized.wat +++ b/tests/compiler/extends-baseaggregate.optimized.wat @@ -29,7 +29,7 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -2209,7 +2209,7 @@ call $~lib/rt/pure/decrement end ) - (func $start (; 32 ;) + (func $~start (; 32 ;) call $start:extends-baseaggregate ) (func $~lib/rt/pure/__visit (; 33 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/extends-baseaggregate.untouched.wat b/tests/compiler/extends-baseaggregate.untouched.wat index 851f92a65a..fa9cfeaf85 100644 --- a/tests/compiler/extends-baseaggregate.untouched.wat +++ b/tests/compiler/extends-baseaggregate.untouched.wat @@ -35,7 +35,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 480)) (global $~lib/heap/__heap_base i32 (i32.const 556)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3807,7 +3807,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start (; 35 ;) + (func $~start (; 35 ;) call $start:extends-baseaggregate ) (func $~lib/rt/pure/__visit (; 36 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/features/js-bigint-integration.optimized.wat b/tests/compiler/features/js-bigint-integration.optimized.wat index a83aeebb09..641bc4d4cd 100644 --- a/tests/compiler/features/js-bigint-integration.optimized.wat +++ b/tests/compiler/features/js-bigint-integration.optimized.wat @@ -9,7 +9,7 @@ (data (i32.const 16) "B\00\00\00\01\00\00\00\01\00\00\00B\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00j\00s\00-\00b\00i\00g\00i\00n\00t\00-\00i\00n\00t\00e\00g\00r\00a\00t\00i\00o\00n\00.\00t\00s") (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "internalValue" (global $features/js-bigint-integration/internalValue)) (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) @@ -40,7 +40,7 @@ (func $features/js-bigint-integration/getInternalValue (; 3 ;) (result i64) i64.const 9007199254740991 ) - (func $start (; 4 ;) + (func $~start (; 4 ;) global.get $~started if return diff --git a/tests/compiler/features/js-bigint-integration.untouched.wat b/tests/compiler/features/js-bigint-integration.untouched.wat index 52a6193f31..926e0a104c 100644 --- a/tests/compiler/features/js-bigint-integration.untouched.wat +++ b/tests/compiler/features/js-bigint-integration.untouched.wat @@ -10,7 +10,7 @@ (table $0 1 funcref) (global $features/js-bigint-integration/internalValue i64 (i64.const 9007199254740991)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "internalValue" (global $features/js-bigint-integration/internalValue)) (export "getInternalValue" (func $features/js-bigint-integration/getInternalValue)) @@ -43,7 +43,7 @@ (func $features/js-bigint-integration/getInternalValue (; 3 ;) (result i64) global.get $features/js-bigint-integration/internalValue ) - (func $start (; 4 ;) + (func $~start (; 4 ;) global.get $~started if return diff --git a/tests/compiler/features/mutable-globals.optimized.wat b/tests/compiler/features/mutable-globals.optimized.wat index 5e4c47ad84..d68ae7f9f2 100644 --- a/tests/compiler/features/mutable-globals.optimized.wat +++ b/tests/compiler/features/mutable-globals.optimized.wat @@ -7,7 +7,7 @@ (data (i32.const 16) "6\00\00\00\01\00\00\00\01\00\00\006\00\00\00f\00e\00a\00t\00u\00r\00e\00s\00/\00m\00u\00t\00a\00b\00l\00e\00-\00g\00l\00o\00b\00a\00l\00s\00.\00t\00s") (global $features/mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "external" (global $features/mutable-globals/external)) (export "internal" (global $features/mutable-globals/internal)) @@ -65,7 +65,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) global.get $~started if return diff --git a/tests/compiler/features/mutable-globals.untouched.wat b/tests/compiler/features/mutable-globals.untouched.wat index 3c3c84bb88..3b29168fe3 100644 --- a/tests/compiler/features/mutable-globals.untouched.wat +++ b/tests/compiler/features/mutable-globals.untouched.wat @@ -8,7 +8,7 @@ (table $0 1 funcref) (global $features/mutable-globals/internal (mut i32) (i32.const 124)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "external" (global $features/mutable-globals/external)) (export "internal" (global $features/mutable-globals/internal)) @@ -70,7 +70,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) global.get $~started if return diff --git a/tests/compiler/features/reference-types.optimized.wat b/tests/compiler/features/reference-types.optimized.wat index 7c2d2eb678..22413dddc7 100644 --- a/tests/compiler/features/reference-types.optimized.wat +++ b/tests/compiler/features/reference-types.optimized.wat @@ -20,7 +20,7 @@ (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) (export "internal" (func $features/reference-types/internal)) - (start $start) + (start $~start) (func $features/reference-types/someFunc (; 5 ;) nop ) @@ -69,7 +69,7 @@ call $features/reference-types/external call $features/reference-types/external ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:features/reference-types ) ) diff --git a/tests/compiler/features/reference-types.untouched.wat b/tests/compiler/features/reference-types.untouched.wat index a43519d41f..69b27288c7 100644 --- a/tests/compiler/features/reference-types.untouched.wat +++ b/tests/compiler/features/reference-types.untouched.wat @@ -21,7 +21,7 @@ (export "memory" (memory $0)) (export "external" (func $features/reference-types/external)) (export "internal" (func $features/reference-types/internal)) - (start $start) + (start $~start) (func $features/reference-types/someFunc (; 5 ;) nop ) @@ -156,7 +156,7 @@ local.set $3 local.get $3 ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:features/reference-types ) ) diff --git a/tests/compiler/features/simd.optimized.wat b/tests/compiler/features/simd.optimized.wat index dfe791edfd..0c8dfc056b 100644 --- a/tests/compiler/features/simd.optimized.wat +++ b/tests/compiler/features/simd.optimized.wat @@ -10,7 +10,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -124,7 +124,7 @@ global.set $~lib/rt/stub/offset end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) (local $0 i32) i32.const 112 global.set $~lib/rt/stub/startOffset diff --git a/tests/compiler/features/simd.untouched.wat b/tests/compiler/features/simd.untouched.wat index 84232c7893..45e8e1e4dd 100644 --- a/tests/compiler/features/simd.untouched.wat +++ b/tests/compiler/features/simd.untouched.wat @@ -18,7 +18,7 @@ (global $~lib/builtins/u16.MAX_VALUE i32 (i32.const 65535)) (global $~lib/heap/__heap_base i32 (i32.const 112)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -2294,7 +2294,7 @@ call $features/simd/test_v32x4 call $features/simd/test_v64x2 ) - (func $start (; 16 ;) + (func $~start (; 16 ;) call $start:features/simd ) ) diff --git a/tests/compiler/features/threads.optimized.wat b/tests/compiler/features/threads.optimized.wat index 01894983b9..a39625f806 100644 --- a/tests/compiler/features/threads.optimized.wat +++ b/tests/compiler/features/threads.optimized.wat @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (memory $0 (shared 1 1)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $features/threads/testAtomic (; 0 ;) i32.const 0 i32.atomic.load8_u @@ -532,7 +532,7 @@ i64.atomic.rmw.cmpxchg drop ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $features/threads/testAtomic call $features/threads/testAtomicAsm ) diff --git a/tests/compiler/features/threads.untouched.wat b/tests/compiler/features/threads.untouched.wat index e92ea98dd5..b3e3c3df17 100644 --- a/tests/compiler/features/threads.untouched.wat +++ b/tests/compiler/features/threads.untouched.wat @@ -4,7 +4,7 @@ (table $0 1 funcref) (global $~lib/ASC_FEATURE_THREADS i32 (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $features/threads/testAtomic (; 0 ;) i32.const 0 i32.atomic.load8_u @@ -538,7 +538,7 @@ call $features/threads/testAtomic call $features/threads/testAtomicAsm ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:features/threads ) ) diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index bc382a57c3..c85d6d80d0 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -6,7 +6,7 @@ (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") (global $for/i (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:for (; 1 ;) (local $0 i32) (local $1 i32) @@ -148,7 +148,7 @@ end end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:for ) ) diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index 7d270fb39e..b0eada0f31 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -7,7 +7,7 @@ (table $0 1 funcref) (global $for/i (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:for (; 1 ;) (local $0 i32) (local $1 i32) @@ -198,7 +198,7 @@ end end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:for ) ) diff --git a/tests/compiler/function-expression.optimized.wat b/tests/compiler/function-expression.optimized.wat index 61d97e31fc..bc0b3e9c8a 100644 --- a/tests/compiler/function-expression.optimized.wat +++ b/tests/compiler/function-expression.optimized.wat @@ -12,7 +12,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -106,7 +106,7 @@ i32.const 2 global.set $~argumentsLength ) - (func $start (; 9 ;) + (func $~start (; 9 ;) call $start:function-expression ) ) diff --git a/tests/compiler/function-expression.untouched.wat b/tests/compiler/function-expression.untouched.wat index 643228f0f5..a3200b2659 100644 --- a/tests/compiler/function-expression.untouched.wat +++ b/tests/compiler/function-expression.untouched.wat @@ -16,7 +16,7 @@ (global $function-expression/f4 (mut i32) (i32.const 4)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -238,7 +238,7 @@ unreachable end ) - (func $start (; 18 ;) + (func $~start (; 18 ;) call $start:function-expression ) ) diff --git a/tests/compiler/function-types.optimized.wat b/tests/compiler/function-types.optimized.wat index b6d4fafbcb..582c78c180 100644 --- a/tests/compiler/function-types.optimized.wat +++ b/tests/compiler/function-types.optimized.wat @@ -15,7 +15,7 @@ (global $function-types/i64Adder (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $function-types/makeAdder~anonymous|0 (; 1 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -163,7 +163,7 @@ unreachable end ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:function-types ) ) diff --git a/tests/compiler/function-types.untouched.wat b/tests/compiler/function-types.untouched.wat index f8ced1145d..5c5c1ecff9 100644 --- a/tests/compiler/function-types.untouched.wat +++ b/tests/compiler/function-types.untouched.wat @@ -16,7 +16,7 @@ (global $function-types/i64Adder (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $function-types/makeAdder~anonymous|0 (; 1 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -222,7 +222,7 @@ unreachable end ) - (func $start (; 13 ;) + (func $~start (; 13 ;) call $start:function-types ) ) diff --git a/tests/compiler/function.untouched.wat b/tests/compiler/function.untouched.wat index 7bb458bf87..30f0205ad9 100644 --- a/tests/compiler/function.untouched.wat +++ b/tests/compiler/function.untouched.wat @@ -17,7 +17,7 @@ (memory $0 0) (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $function/_ (; 0 ;) nop ) @@ -131,7 +131,7 @@ call $function/ddd drop ) - (func $start (; 19 ;) + (func $~start (; 19 ;) call $start:function ) ) diff --git a/tests/compiler/getter-call.optimized.wat b/tests/compiler/getter-call.optimized.wat index 78fd78097a..23a4033135 100644 --- a/tests/compiler/getter-call.optimized.wat +++ b/tests/compiler/getter-call.optimized.wat @@ -9,7 +9,7 @@ (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -83,7 +83,7 @@ global.set $~argumentsLength i32.const 42 ) - (func $start (; 3 ;) + (func $~start (; 3 ;) i32.const 16 global.set $~lib/rt/stub/startOffset i32.const 16 diff --git a/tests/compiler/getter-call.untouched.wat b/tests/compiler/getter-call.untouched.wat index f679e4580b..146976a778 100644 --- a/tests/compiler/getter-call.untouched.wat +++ b/tests/compiler/getter-call.untouched.wat @@ -14,7 +14,7 @@ (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $getter-call/test)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -162,7 +162,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $start (; 8 ;) + (func $~start (; 8 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add diff --git a/tests/compiler/getter-setter.optimized.wat b/tests/compiler/getter-setter.optimized.wat index 913af85512..997fe6c877 100644 --- a/tests/compiler/getter-setter.optimized.wat +++ b/tests/compiler/getter-setter.optimized.wat @@ -6,8 +6,8 @@ (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00g\00e\00t\00t\00e\00r\00-\00s\00e\00t\00t\00e\00r\00.\00t\00s") (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) - (func $start (; 1 ;) + (start $~start) + (func $~start (; 1 ;) global.get $getter-setter/Foo._bar if i32.const 0 diff --git a/tests/compiler/getter-setter.untouched.wat b/tests/compiler/getter-setter.untouched.wat index 2827fe41d3..945638e031 100644 --- a/tests/compiler/getter-setter.untouched.wat +++ b/tests/compiler/getter-setter.untouched.wat @@ -9,7 +9,7 @@ (table $0 1 funcref) (global $getter-setter/Foo._bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $getter-setter/Foo.bar.get:bar (; 1 ;) (result i32) global.get $getter-setter/Foo._bar ) @@ -59,7 +59,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:getter-setter ) ) diff --git a/tests/compiler/if.optimized.wat b/tests/compiler/if.optimized.wat index 63a2895271..f43592ac61 100644 --- a/tests/compiler/if.optimized.wat +++ b/tests/compiler/if.optimized.wat @@ -11,7 +11,7 @@ (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElse)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) - (start $start) + (start $~start) (func $if/ifThenElse (; 1 ;) (param $0 i32) (result i32) i32.const 1 i32.const 0 @@ -107,7 +107,7 @@ unreachable end ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:if ) ) diff --git a/tests/compiler/if.untouched.wat b/tests/compiler/if.untouched.wat index 96ef040980..1df0219c66 100644 --- a/tests/compiler/if.untouched.wat +++ b/tests/compiler/if.untouched.wat @@ -12,7 +12,7 @@ (export "ifThen" (func $if/ifThen)) (export "ifThenElseBlock" (func $if/ifThenElseBlock)) (export "ifAlwaysReturns" (func $if/ifAlwaysReturns)) - (start $start) + (start $~start) (func $if/ifThenElse (; 1 ;) (param $0 i32) (result i32) local.get $0 if @@ -138,7 +138,7 @@ end unreachable ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:if ) ) diff --git a/tests/compiler/import.untouched.wat b/tests/compiler/import.untouched.wat index 3808403afd..747041e39d 100644 --- a/tests/compiler/import.untouched.wat +++ b/tests/compiler/import.untouched.wat @@ -7,7 +7,7 @@ (global $export/b i32 (i32.const 2)) (global $export/c i32 (i32.const 3)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $export/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -59,7 +59,7 @@ call $export/ns.two call $export-default/theDefault ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:import ) ) diff --git a/tests/compiler/infer-array.optimized.wat b/tests/compiler/infer-array.optimized.wat index f7fba3882b..10b1b22c7f 100644 --- a/tests/compiler/infer-array.optimized.wat +++ b/tests/compiler/infer-array.optimized.wat @@ -22,7 +22,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -454,7 +454,7 @@ i32.const 0 i32.store offset=4 ) - (func $start (; 9 ;) + (func $~start (; 9 ;) call $start:infer-array ) ) diff --git a/tests/compiler/infer-array.untouched.wat b/tests/compiler/infer-array.untouched.wat index 359bdf6584..149ccb73b7 100644 --- a/tests/compiler/infer-array.untouched.wat +++ b/tests/compiler/infer-array.untouched.wat @@ -24,7 +24,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 364)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -1755,7 +1755,7 @@ local.get $1 call $~lib/rt/stub/__release ) - (func $start (; 20 ;) + (func $~start (; 20 ;) call $start:infer-array ) ) diff --git a/tests/compiler/infer-generic.optimized.wat b/tests/compiler/infer-generic.optimized.wat index 979bd8ed66..2d981a9ae7 100644 --- a/tests/compiler/infer-generic.optimized.wat +++ b/tests/compiler/infer-generic.optimized.wat @@ -14,7 +14,7 @@ (export "test2" (func $infer-generic/test2)) (export "test3" (func $infer-generic/test2)) (export "test4" (func $infer-generic/test2)) - (start $start) + (start $~start) (func $start:infer-generic~anonymous|0 (; 0 ;) (param $0 i32) (param $1 f32) (param $2 i32) (param $3 i32) (result i32) local.get $1 f32.const 0 @@ -71,7 +71,7 @@ (func $infer-generic/test2 (; 3 ;) (param $0 i32) (result i32) local.get $0 ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $~lib/array/Array#reduce ) ) diff --git a/tests/compiler/infer-generic.untouched.wat b/tests/compiler/infer-generic.untouched.wat index 7fa4d6838c..a5d3745e6a 100644 --- a/tests/compiler/infer-generic.untouched.wat +++ b/tests/compiler/infer-generic.untouched.wat @@ -22,7 +22,7 @@ (export "test2" (func $infer-generic/test2)) (export "test3" (func $infer-generic/test3)) (export "test4" (func $infer-generic/test4)) - (start $start) + (start $~start) (func $infer-generic/inferCompatible (; 1 ;) (param $0 f64) (param $1 f64) (result i32) local.get $0 local.get $1 @@ -164,7 +164,7 @@ local.get $0 call $infer-generic/inferEncapsulatedFunctionMixed ) - (func $start (; 15 ;) + (func $~start (; 15 ;) call $start:infer-generic ) ) diff --git a/tests/compiler/infer-type.optimized.wat b/tests/compiler/infer-type.optimized.wat index cd8ce31d1e..3da1fa4920 100644 --- a/tests/compiler/infer-type.optimized.wat +++ b/tests/compiler/infer-type.optimized.wat @@ -6,7 +6,7 @@ (global $infer-type/rf (mut f32) (f32.const 0)) (global $infer-type/rF (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:infer-type (; 0 ;) (local $0 i32) i32.const 0 @@ -30,7 +30,7 @@ end end ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:infer-type ) ) diff --git a/tests/compiler/infer-type.untouched.wat b/tests/compiler/infer-type.untouched.wat index 8be215c996..dde11a7263 100644 --- a/tests/compiler/infer-type.untouched.wat +++ b/tests/compiler/infer-type.untouched.wat @@ -16,7 +16,7 @@ (global $infer-type/inferi (mut i32) (i32.const -2147483648)) (global $infer-type/inferu (mut i32) (i32.const 2147483647)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $infer-type/locals (; 0 ;) (local $0 i32) (local $1 i64) @@ -95,7 +95,7 @@ end end ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:infer-type ) ) diff --git a/tests/compiler/inlining-blocklocals.optimized.wat b/tests/compiler/inlining-blocklocals.optimized.wat index 19e12183cb..daedfe913b 100644 --- a/tests/compiler/inlining-blocklocals.optimized.wat +++ b/tests/compiler/inlining-blocklocals.optimized.wat @@ -9,7 +9,7 @@ (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $inlining-blocklocals/test (; 1 ;) (local $0 i32) global.get $inlining-blocklocals/b @@ -46,7 +46,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $inlining-blocklocals/test ) ) diff --git a/tests/compiler/inlining-blocklocals.untouched.wat b/tests/compiler/inlining-blocklocals.untouched.wat index a8721708df..637c130cb0 100644 --- a/tests/compiler/inlining-blocklocals.untouched.wat +++ b/tests/compiler/inlining-blocklocals.untouched.wat @@ -10,7 +10,7 @@ (global $inlining-blocklocals/theCall_b (mut i32) (i32.const 0)) (global $inlining-blocklocals/theCall_c (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $inlining-blocklocals/test (; 1 ;) (local $0 i32) (local $1 i32) @@ -95,7 +95,7 @@ (func $start:inlining-blocklocals (; 2 ;) call $inlining-blocklocals/test ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:inlining-blocklocals ) ) diff --git a/tests/compiler/inlining.optimized.wat b/tests/compiler/inlining.optimized.wat index 384ce04b77..dbab61e06e 100644 --- a/tests/compiler/inlining.optimized.wat +++ b/tests/compiler/inlining.optimized.wat @@ -13,7 +13,7 @@ (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) - (start $start) + (start $~start) (func $inlining/test (; 1 ;) (result i32) i32.const 3 ) @@ -184,7 +184,7 @@ unreachable end ) - (func $start (; 5 ;) + (func $~start (; 5 ;) i32.const 1 global.set $~argumentsLength i32.const 64 diff --git a/tests/compiler/inlining.untouched.wat b/tests/compiler/inlining.untouched.wat index 5052114f02..c092b72abd 100644 --- a/tests/compiler/inlining.untouched.wat +++ b/tests/compiler/inlining.untouched.wat @@ -18,7 +18,7 @@ (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) (export "test" (func $inlining/test)) - (start $start) + (start $~start) (func $inlining/test (; 1 ;) (result i32) global.get $inlining/constantGlobal i32.const 2 @@ -517,7 +517,7 @@ global.set $~lib/rt/stub/offset call $inlining/test_ctor ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:inlining ) ) diff --git a/tests/compiler/instanceof.optimized.wat b/tests/compiler/instanceof.optimized.wat index 02d11c651f..1ae1730b29 100644 --- a/tests/compiler/instanceof.optimized.wat +++ b/tests/compiler/instanceof.optimized.wat @@ -6,8 +6,8 @@ (data (i32.const 16) "\1a\00\00\00\01\00\00\00\01\00\00\00\1a\00\00\00i\00n\00s\00t\00a\00n\00c\00e\00o\00f\00.\00t\00s") (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) - (func $start (; 1 ;) + (start $~start) + (func $~start (; 1 ;) global.get $instanceof/an if i32.const 0 diff --git a/tests/compiler/instanceof.untouched.wat b/tests/compiler/instanceof.untouched.wat index 554ddde4a4..e7012fdc81 100644 --- a/tests/compiler/instanceof.untouched.wat +++ b/tests/compiler/instanceof.untouched.wat @@ -16,7 +16,7 @@ (global $instanceof/F (mut f64) (f64.const 0)) (global $instanceof/an (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $instanceof/isI32 (; 1 ;) (param $0 i32) (result i32) i32.const 1 return @@ -129,7 +129,7 @@ unreachable end ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:instanceof ) ) diff --git a/tests/compiler/limits.untouched.wat b/tests/compiler/limits.untouched.wat index 4e9138ede2..234e6174c2 100644 --- a/tests/compiler/limits.untouched.wat +++ b/tests/compiler/limits.untouched.wat @@ -29,7 +29,7 @@ (global $~lib/builtins/f64.MIN_SAFE_INTEGER f64 (f64.const -9007199254740991)) (global $~lib/builtins/f64.MAX_SAFE_INTEGER f64 (f64.const 9007199254740991)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:limits (; 0 ;) global.get $~lib/builtins/i8.MIN_VALUE drop @@ -84,7 +84,7 @@ global.get $~lib/builtins/f64.MAX_SAFE_INTEGER drop ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:limits ) ) diff --git a/tests/compiler/literals.untouched.wat b/tests/compiler/literals.untouched.wat index e19c87fcc2..36f6d45343 100644 --- a/tests/compiler/literals.untouched.wat +++ b/tests/compiler/literals.untouched.wat @@ -3,7 +3,7 @@ (memory $0 0) (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:literals (; 0 ;) i32.const 0 drop @@ -94,7 +94,7 @@ i32.const 0 drop ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:literals ) ) diff --git a/tests/compiler/logical.optimized.wat b/tests/compiler/logical.optimized.wat index b871b3988e..98ddb2e6cb 100644 --- a/tests/compiler/logical.optimized.wat +++ b/tests/compiler/logical.optimized.wat @@ -9,7 +9,7 @@ (global $logical/f (mut f32) (f32.const 0)) (global $logical/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:logical (; 1 ;) (local $0 f32) (local $1 f64) @@ -92,7 +92,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:logical ) ) diff --git a/tests/compiler/logical.untouched.wat b/tests/compiler/logical.untouched.wat index 96e168b11d..5e896dfe4f 100644 --- a/tests/compiler/logical.untouched.wat +++ b/tests/compiler/logical.untouched.wat @@ -11,7 +11,7 @@ (global $logical/f (mut f32) (f32.const 0)) (global $logical/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $logical/testShortcutAnd (; 1 ;) (param $0 i64) (param $1 i32) (result i32) local.get $0 i64.const 0 @@ -542,7 +542,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:logical ) ) diff --git a/tests/compiler/loop-flow.optimized.wat b/tests/compiler/loop-flow.optimized.wat index 9a45c12185..97d51576a3 100644 --- a/tests/compiler/loop-flow.optimized.wat +++ b/tests/compiler/loop-flow.optimized.wat @@ -19,7 +19,7 @@ (export "doReturn" (func $loop-flow/whileReturn)) (export "doThrow" (func $loop-flow/doThrow)) (export "doAny" (func $loop-flow/doAny)) - (start $start) + (start $~start) (func $loop-flow/whileReturn (; 1 ;) (result i32) i32.const 1 ) @@ -156,7 +156,7 @@ call $~lib/builtins/abort unreachable ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:loop-flow ) ) diff --git a/tests/compiler/loop-flow.untouched.wat b/tests/compiler/loop-flow.untouched.wat index e0ec06b62b..e99396941a 100644 --- a/tests/compiler/loop-flow.untouched.wat +++ b/tests/compiler/loop-flow.untouched.wat @@ -20,7 +20,7 @@ (export "doReturn" (func $loop-flow/doReturn)) (export "doThrow" (func $loop-flow/doThrow)) (export "doAny" (func $loop-flow/doAny)) - (start $start) + (start $~start) (func $loop-flow/whileReturn (; 1 ;) (result i32) (local $0 i32) loop $while-continue|0 @@ -302,7 +302,7 @@ end unreachable ) - (func $start (; 13 ;) + (func $~start (; 13 ;) call $start:loop-flow ) ) diff --git a/tests/compiler/many-locals.optimized.wat b/tests/compiler/many-locals.optimized.wat index 7e762606d9..68668d9d07 100644 --- a/tests/compiler/many-locals.optimized.wat +++ b/tests/compiler/many-locals.optimized.wat @@ -8,7 +8,7 @@ (export "memory" (memory $0)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) - (start $start) + (start $~start) (func $many-locals/testI32 (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -19,7 +19,7 @@ i32.const 24 i32.shr_s ) - (func $start (; 3 ;) + (func $~start (; 3 ;) i32.const 42 call $many-locals/testI8 i32.const 42 diff --git a/tests/compiler/many-locals.untouched.wat b/tests/compiler/many-locals.untouched.wat index 69bef83c25..78b6c5a1ec 100644 --- a/tests/compiler/many-locals.untouched.wat +++ b/tests/compiler/many-locals.untouched.wat @@ -9,7 +9,7 @@ (export "memory" (memory $0)) (export "testI32" (func $many-locals/testI32)) (export "testI8" (func $many-locals/testI8)) - (start $start) + (start $~start) (func $many-locals/testI32 (; 1 ;) (param $0 i32) (result i32) (local $1 i32) (local $2 i32) @@ -816,7 +816,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:many-locals ) ) diff --git a/tests/compiler/memcpy.optimized.wat b/tests/compiler/memcpy.optimized.wat index b823b9bf73..8654966590 100644 --- a/tests/compiler/memcpy.optimized.wat +++ b/tests/compiler/memcpy.optimized.wat @@ -8,7 +8,7 @@ (global $memcpy/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "memcpy" (func $memcpy/memcpy)) - (start $start) + (start $~start) (func $memcpy/memcpy (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -1037,7 +1037,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memcpy ) ) diff --git a/tests/compiler/memcpy.untouched.wat b/tests/compiler/memcpy.untouched.wat index 8adea887ad..40ca6dc658 100644 --- a/tests/compiler/memcpy.untouched.wat +++ b/tests/compiler/memcpy.untouched.wat @@ -10,7 +10,7 @@ (global $memcpy/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) (export "memcpy" (func $memcpy/memcpy)) - (start $start) + (start $~start) (func $memcpy/memcpy (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -1246,7 +1246,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memcpy ) ) diff --git a/tests/compiler/memmove.optimized.wat b/tests/compiler/memmove.optimized.wat index dc737a1817..4c976e8548 100644 --- a/tests/compiler/memmove.optimized.wat +++ b/tests/compiler/memmove.optimized.wat @@ -7,7 +7,7 @@ (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00m\00e\00m\00m\00o\00v\00e\00.\00t\00s") (global $memmove/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $memmove/memmove (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -366,7 +366,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memmove ) ) diff --git a/tests/compiler/memmove.untouched.wat b/tests/compiler/memmove.untouched.wat index 6d7dfe20db..1738cfbbf8 100644 --- a/tests/compiler/memmove.untouched.wat +++ b/tests/compiler/memmove.untouched.wat @@ -9,7 +9,7 @@ (global $memmove/base i32 (i32.const 8)) (global $memmove/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $memmove/memmove (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -411,7 +411,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memmove ) ) diff --git a/tests/compiler/memset.optimized.wat b/tests/compiler/memset.optimized.wat index c28d2ffeea..67fd3a804c 100644 --- a/tests/compiler/memset.optimized.wat +++ b/tests/compiler/memset.optimized.wat @@ -7,7 +7,7 @@ (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00s\00e\00t\00.\00t\00s") (global $memset/dest (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $memset/memset (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (local $3 i32) (local $4 i64) @@ -327,7 +327,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memset ) ) diff --git a/tests/compiler/memset.untouched.wat b/tests/compiler/memset.untouched.wat index a7d7e75268..bf103e9636 100644 --- a/tests/compiler/memset.untouched.wat +++ b/tests/compiler/memset.untouched.wat @@ -9,7 +9,7 @@ (global $memset/dest (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 52)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $memset/memset (; 1 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) (local $3 i32) (local $4 i32) @@ -375,7 +375,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:memset ) ) diff --git a/tests/compiler/merge.untouched.wat b/tests/compiler/merge.untouched.wat index 3ce529bf28..62fc213cfd 100644 --- a/tests/compiler/merge.untouched.wat +++ b/tests/compiler/merge.untouched.wat @@ -13,7 +13,7 @@ (global $merge/enumNamespace.val i32 (i32.const 1)) (global $merge/namespaceEnum.val i32 (i32.const 2)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $merge/namespaceType.test (; 0 ;) nop ) @@ -88,7 +88,7 @@ call $merge/namespaceNamespace.test1 call $merge/namespaceNamespace.test2 ) - (func $start (; 17 ;) + (func $~start (; 17 ;) call $start:merge ) ) diff --git a/tests/compiler/namespace.optimized.wat b/tests/compiler/namespace.optimized.wat index 1a28a1cf72..7e36af471c 100644 --- a/tests/compiler/namespace.optimized.wat +++ b/tests/compiler/namespace.optimized.wat @@ -4,8 +4,8 @@ (global $namespace/Outer.Inner.anotherVar (mut i32) (i32.const 0)) (global $namespace/Outer.Inner.evenAnotherVar (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 0 global.set $namespace/Outer.Inner.anotherVar i32.const 1 diff --git a/tests/compiler/namespace.untouched.wat b/tests/compiler/namespace.untouched.wat index 013f8d1b96..7c0b368b02 100644 --- a/tests/compiler/namespace.untouched.wat +++ b/tests/compiler/namespace.untouched.wat @@ -10,7 +10,7 @@ (global $namespace/Outer.Inner.anEnum.ONE i32 (i32.const 1)) (global $namespace/Outer.Inner.anEnum.TWO i32 (i32.const 2)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $namespace/Outer.Inner.aFunc (; 0 ;) (result i32) global.get $namespace/Outer.Inner.aVar ) @@ -33,7 +33,7 @@ call $namespace/Joined.anotherFunc drop ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:namespace ) ) diff --git a/tests/compiler/new.optimized.wat b/tests/compiler/new.optimized.wat index 0dcfcc3eff..839e931fa0 100644 --- a/tests/compiler/new.optimized.wat +++ b/tests/compiler/new.optimized.wat @@ -9,7 +9,7 @@ (global $new/gen (mut i32) (i32.const 0)) (global $new/ref2 (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -109,7 +109,7 @@ call $~lib/rt/stub/__alloc global.set $new/ref2 ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:new ) ) diff --git a/tests/compiler/new.untouched.wat b/tests/compiler/new.untouched.wat index b46e25b86c..009f840031 100644 --- a/tests/compiler/new.untouched.wat +++ b/tests/compiler/new.untouched.wat @@ -12,7 +12,7 @@ (global $new/ref2 (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -295,7 +295,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $start (; 11 ;) + (func $~start (; 11 ;) call $start:new ) ) diff --git a/tests/compiler/number.optimized.wat b/tests/compiler/number.optimized.wat index 7d95607112..b07362c05d 100644 --- a/tests/compiler/number.optimized.wat +++ b/tests/compiler/number.optimized.wat @@ -44,7 +44,7 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) i32.const 1 i32.const 2 @@ -2139,7 +2139,7 @@ unreachable end ) - (func $start (; 22 ;) + (func $~start (; 22 ;) call $start:number ) ) diff --git a/tests/compiler/number.untouched.wat b/tests/compiler/number.untouched.wat index 02f34f7951..41ed83255b 100644 --- a/tests/compiler/number.untouched.wat +++ b/tests/compiler/number.untouched.wat @@ -60,7 +60,7 @@ (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) (global $~lib/heap/__heap_base i32 (i32.const 2076)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -4212,7 +4212,7 @@ local.get $10 call $~lib/rt/stub/__release ) - (func $start (; 30 ;) + (func $~start (; 30 ;) call $start:number ) ) diff --git a/tests/compiler/optional-typeparameters.optimized.wat b/tests/compiler/optional-typeparameters.optimized.wat index 9f39211a54..e5a0edcd04 100644 --- a/tests/compiler/optional-typeparameters.optimized.wat +++ b/tests/compiler/optional-typeparameters.optimized.wat @@ -8,7 +8,7 @@ (global $optional-typeparameters/tConcrete (mut i32) (i32.const 0)) (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -78,7 +78,7 @@ i32.store offset=12 local.get $2 ) - (func $start (; 2 ;) + (func $~start (; 2 ;) i32.const 16 global.set $~lib/rt/stub/startOffset i32.const 16 diff --git a/tests/compiler/optional-typeparameters.untouched.wat b/tests/compiler/optional-typeparameters.untouched.wat index 6017482a21..ab290f955a 100644 --- a/tests/compiler/optional-typeparameters.untouched.wat +++ b/tests/compiler/optional-typeparameters.untouched.wat @@ -13,7 +13,7 @@ (global $optional-typeparameters/tDerived (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $optional-typeparameters/testConcrete (; 0 ;) (param $0 i32) (result i32) local.get $0 ) @@ -198,7 +198,7 @@ call $optional-typeparameters/TestDerived#test drop ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:optional-typeparameters ) ) diff --git a/tests/compiler/overflow.untouched.wat b/tests/compiler/overflow.untouched.wat index 3dd5bc1bce..cf4e334191 100644 --- a/tests/compiler/overflow.untouched.wat +++ b/tests/compiler/overflow.untouched.wat @@ -6,7 +6,7 @@ (data (i32.const 16) "\16\00\00\00\01\00\00\00\01\00\00\00\16\00\00\00o\00v\00e\00r\00f\00l\00o\00w\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:overflow (; 1 ;) (local $0 i32) (local $1 i32) @@ -728,7 +728,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:overflow ) ) diff --git a/tests/compiler/portable-conversions.untouched.wat b/tests/compiler/portable-conversions.untouched.wat index fe4d48e987..08839798c6 100644 --- a/tests/compiler/portable-conversions.untouched.wat +++ b/tests/compiler/portable-conversions.untouched.wat @@ -10,7 +10,7 @@ (global $portable-conversions/f (mut f32) (f32.const 1)) (global $portable-conversions/F (mut f64) (f64.const 1)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:portable-conversions (; 1 ;) global.get $portable-conversions/i i32.const 24 @@ -633,7 +633,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:portable-conversions ) ) diff --git a/tests/compiler/rc/global-init.optimized.wat b/tests/compiler/rc/global-init.optimized.wat index db8058e617..4678884156 100644 --- a/tests/compiler/rc/global-init.optimized.wat +++ b/tests/compiler/rc/global-init.optimized.wat @@ -27,7 +27,7 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 4 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1720,7 +1720,7 @@ i32.const 0 global.set $rc/global-init/b ) - (func $start (; 27 ;) + (func $~start (; 27 ;) call $start:rc/global-init ) (func $~lib/rt/pure/__visit (; 28 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/global-init.untouched.wat b/tests/compiler/rc/global-init.untouched.wat index 54e273e99a..e633ed7976 100644 --- a/tests/compiler/rc/global-init.untouched.wat +++ b/tests/compiler/rc/global-init.untouched.wat @@ -34,7 +34,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 304)) (global $~lib/heap/__heap_base i32 (i32.const 332)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $rc/global-init/getRef (; 5 ;) (result i32) i32.const 32 ) @@ -3279,7 +3279,7 @@ local.get $1 global.set $rc/global-init/b ) - (func $start (; 33 ;) + (func $~start (; 33 ;) call $start:rc/global-init ) (func $~lib/rt/pure/__visit (; 34 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/local-init.optimized.wat b/tests/compiler/rc/local-init.optimized.wat index 389a957638..1b9862ce4b 100644 --- a/tests/compiler/rc/local-init.optimized.wat +++ b/tests/compiler/rc/local-init.optimized.wat @@ -26,7 +26,7 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1754,7 +1754,7 @@ call $~lib/rt/pure/decrement end ) - (func $start (; 29 ;) + (func $~start (; 29 ;) call $start:rc/local-init ) (func $~lib/rt/pure/__visit (; 30 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/local-init.untouched.wat b/tests/compiler/rc/local-init.untouched.wat index f255370c27..665e5d02e7 100644 --- a/tests/compiler/rc/local-init.untouched.wat +++ b/tests/compiler/rc/local-init.untouched.wat @@ -32,7 +32,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 304)) (global $~lib/heap/__heap_base i32 (i32.const 340)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3269,7 +3269,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start (; 34 ;) + (func $~start (; 34 ;) call $start:rc/local-init ) (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/logical-and-mismatch.optimized.wat b/tests/compiler/rc/logical-and-mismatch.optimized.wat index 4c05a44162..d827d8b85a 100644 --- a/tests/compiler/rc/logical-and-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-and-mismatch.optimized.wat @@ -26,7 +26,7 @@ (global $rc/logical-and-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1796,7 +1796,7 @@ global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 32 ;) + (func $~start (; 32 ;) call $start:rc/logical-and-mismatch ) (func $~lib/rt/pure/__visit (; 33 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/logical-and-mismatch.untouched.wat b/tests/compiler/rc/logical-and-mismatch.untouched.wat index 8bcf5c9a8d..8298354b0c 100644 --- a/tests/compiler/rc/logical-and-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-and-mismatch.untouched.wat @@ -32,7 +32,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 288)) (global $~lib/heap/__heap_base i32 (i32.const 324)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3309,7 +3309,7 @@ global.get $rc/logical-and-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 34 ;) + (func $~start (; 34 ;) call $start:rc/logical-and-mismatch ) (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/logical-or-mismatch.optimized.wat b/tests/compiler/rc/logical-or-mismatch.optimized.wat index 4a08827b06..39e57ab463 100644 --- a/tests/compiler/rc/logical-or-mismatch.optimized.wat +++ b/tests/compiler/rc/logical-or-mismatch.optimized.wat @@ -26,7 +26,7 @@ (global $rc/logical-or-mismatch/gloRef (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1796,7 +1796,7 @@ global.get $rc/logical-or-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 32 ;) + (func $~start (; 32 ;) call $start:rc/logical-or-mismatch ) (func $~lib/rt/pure/__visit (; 33 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/logical-or-mismatch.untouched.wat b/tests/compiler/rc/logical-or-mismatch.untouched.wat index 6dae2b6b19..56b270725e 100644 --- a/tests/compiler/rc/logical-or-mismatch.untouched.wat +++ b/tests/compiler/rc/logical-or-mismatch.untouched.wat @@ -32,7 +32,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 288)) (global $~lib/heap/__heap_base i32 (i32.const 324)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3309,7 +3309,7 @@ global.get $rc/logical-or-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 34 ;) + (func $~start (; 34 ;) call $start:rc/logical-or-mismatch ) (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/rereturn.untouched.wat b/tests/compiler/rc/rereturn.untouched.wat index 547c0f9cfd..5989bbf377 100644 --- a/tests/compiler/rc/rereturn.untouched.wat +++ b/tests/compiler/rc/rereturn.untouched.wat @@ -32,7 +32,7 @@ (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3245,7 +3245,7 @@ call $rc/rereturn/rereturnRef call $~lib/rt/pure/__release ) - (func $start (; 31 ;) + (func $~start (; 31 ;) call $start:rc/rereturn ) (func $~lib/rt/pure/__visit (; 32 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/ternary-mismatch.optimized.wat b/tests/compiler/rc/ternary-mismatch.optimized.wat index df0391edf3..d29eddf25c 100644 --- a/tests/compiler/rc/ternary-mismatch.optimized.wat +++ b/tests/compiler/rc/ternary-mismatch.optimized.wat @@ -28,7 +28,7 @@ (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -1797,7 +1797,7 @@ global.get $rc/ternary-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 34 ;) + (func $~start (; 34 ;) call $start:rc/ternary-mismatch ) (func $~lib/rt/pure/__visit (; 35 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/rc/ternary-mismatch.untouched.wat b/tests/compiler/rc/ternary-mismatch.untouched.wat index 7f0c196616..ce9ccf2a2c 100644 --- a/tests/compiler/rc/ternary-mismatch.untouched.wat +++ b/tests/compiler/rc/ternary-mismatch.untouched.wat @@ -34,7 +34,7 @@ (export "memory" (memory $0)) (export "test1" (func $rc/ternary-mismatch/test1)) (export "test2" (func $rc/ternary-mismatch/test2)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -3293,7 +3293,7 @@ global.get $rc/ternary-mismatch/gloRef call $~lib/rt/pure/__release ) - (func $start (; 36 ;) + (func $~start (; 36 ;) call $start:rc/ternary-mismatch ) (func $~lib/rt/pure/__visit (; 37 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/reexport.optimized.wat b/tests/compiler/reexport.optimized.wat index fde4e51818..2aa38298ec 100644 --- a/tests/compiler/reexport.optimized.wat +++ b/tests/compiler/reexport.optimized.wat @@ -17,7 +17,7 @@ (export "renamed_add" (func $export/add)) (export "rerenamed_sub" (func $export/mul)) (export "renamed_ns.two" (func $export/ns.one)) - (start $start) + (start $~start) (func $export/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -36,7 +36,7 @@ (func $export/ns.one (; 3 ;) nop ) - (func $start (; 4 ;) + (func $~start (; 4 ;) i32.const 1 i32.const 2 call $export/add diff --git a/tests/compiler/reexport.untouched.wat b/tests/compiler/reexport.untouched.wat index a63db8e4bb..8c84f16753 100644 --- a/tests/compiler/reexport.untouched.wat +++ b/tests/compiler/reexport.untouched.wat @@ -18,7 +18,7 @@ (export "renamed_add" (func $export/add)) (export "rerenamed_sub" (func $export/mul)) (export "renamed_ns.two" (func $export/ns.two)) - (start $start) + (start $~start) (func $export/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -50,7 +50,7 @@ (func $export/ns.two (; 5 ;) nop ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:reexport ) ) diff --git a/tests/compiler/rereexport.untouched.wat b/tests/compiler/rereexport.untouched.wat index fd72a51bbf..838b5739a4 100644 --- a/tests/compiler/rereexport.untouched.wat +++ b/tests/compiler/rereexport.untouched.wat @@ -11,7 +11,7 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) - (start $start) + (start $~start) (func $export/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -35,7 +35,7 @@ (func $start:rereexport (; 3 ;) call $start:reexport ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:rereexport ) ) diff --git a/tests/compiler/resolve-access.optimized.wat b/tests/compiler/resolve-access.optimized.wat index 85bd385ba2..7f447fd521 100644 --- a/tests/compiler/resolve-access.optimized.wat +++ b/tests/compiler/resolve-access.optimized.wat @@ -21,7 +21,7 @@ (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -574,7 +574,7 @@ i32.wrap_i64 call $~lib/util/number/utoa32 ) - (func $start (; 16 ;) + (func $~start (; 16 ;) i32.const 192 global.set $~lib/rt/stub/startOffset i32.const 192 diff --git a/tests/compiler/resolve-access.untouched.wat b/tests/compiler/resolve-access.untouched.wat index bdcf751fae..2489d8dbc8 100644 --- a/tests/compiler/resolve-access.untouched.wat +++ b/tests/compiler/resolve-access.untouched.wat @@ -28,7 +28,7 @@ (export "arrayAccess" (func $resolve-access/arrayAccess)) (export "fieldAccess" (func $resolve-access/fieldAccess)) (export "propertyAccess" (func $resolve-access/propertyAccess)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -2054,7 +2054,7 @@ call $~lib/rt/stub/__release local.get $1 ) - (func $start (; 25 ;) + (func $~start (; 25 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add diff --git a/tests/compiler/resolve-binary.optimized.wat b/tests/compiler/resolve-binary.optimized.wat index bad6cbd205..c0c18b1c9d 100644 --- a/tests/compiler/resolve-binary.optimized.wat +++ b/tests/compiler/resolve-binary.optimized.wat @@ -61,7 +61,7 @@ (global $resolve-binary/bar (mut i32) (i32.const 0)) (global $resolve-binary/bar2 (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/number/Bool#toString (; 1 ;) (param $0 i32) (result i32) i32.const 32 i32.const 64 @@ -2368,7 +2368,7 @@ unreachable end ) - (func $start (; 19 ;) + (func $~start (; 19 ;) call $start:resolve-binary ) ) diff --git a/tests/compiler/resolve-binary.untouched.wat b/tests/compiler/resolve-binary.untouched.wat index 1b7b1cde3b..88d1eaafda 100644 --- a/tests/compiler/resolve-binary.untouched.wat +++ b/tests/compiler/resolve-binary.untouched.wat @@ -79,7 +79,7 @@ (global $resolve-binary/bar2 (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8744)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/number/Bool#toString (; 1 ;) (param $0 i32) (result i32) local.get $0 if (result i32) @@ -5531,7 +5531,7 @@ local.get $62 call $~lib/rt/stub/__release ) - (func $start (; 44 ;) + (func $~start (; 44 ;) call $start:resolve-binary ) ) diff --git a/tests/compiler/resolve-elementaccess.optimized.wat b/tests/compiler/resolve-elementaccess.optimized.wat index be5d5ac7cc..cd48f2864a 100644 --- a/tests/compiler/resolve-elementaccess.optimized.wat +++ b/tests/compiler/resolve-elementaccess.optimized.wat @@ -44,7 +44,7 @@ (global $~lib/util/number/_frc_pow (mut i64) (i64.const 0)) (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -1815,7 +1815,7 @@ unreachable end ) - (func $start (; 21 ;) + (func $~start (; 21 ;) call $start:resolve-elementaccess ) ) diff --git a/tests/compiler/resolve-elementaccess.untouched.wat b/tests/compiler/resolve-elementaccess.untouched.wat index f773e92468..677f0aede7 100644 --- a/tests/compiler/resolve-elementaccess.untouched.wat +++ b/tests/compiler/resolve-elementaccess.untouched.wat @@ -51,7 +51,7 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 2136)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -3822,7 +3822,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $start (; 27 ;) + (func $~start (; 27 ;) call $start:resolve-elementaccess ) ) diff --git a/tests/compiler/resolve-function-expression.optimized.wat b/tests/compiler/resolve-function-expression.optimized.wat index 87808cc46b..9a48402352 100644 --- a/tests/compiler/resolve-function-expression.optimized.wat +++ b/tests/compiler/resolve-function-expression.optimized.wat @@ -15,7 +15,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:resolve-function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) local.get $0 i32.const 40 @@ -392,7 +392,7 @@ unreachable end ) - (func $start (; 13 ;) + (func $~start (; 13 ;) call $start:resolve-function-expression ) ) diff --git a/tests/compiler/resolve-function-expression.untouched.wat b/tests/compiler/resolve-function-expression.untouched.wat index d972f04f9f..9d882f285b 100644 --- a/tests/compiler/resolve-function-expression.untouched.wat +++ b/tests/compiler/resolve-function-expression.untouched.wat @@ -22,7 +22,7 @@ (global $~lib/heap/__heap_base i32 (i32.const 596)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:resolve-function-expression~anonymous|0 (; 1 ;) (param $0 i32) (result i32) local.get $0 i32.const 40 @@ -692,7 +692,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start (; 17 ;) + (func $~start (; 17 ;) call $start:resolve-function-expression ) ) diff --git a/tests/compiler/resolve-new.optimized.wat b/tests/compiler/resolve-new.optimized.wat index bec129ac15..c4170ae6ab 100644 --- a/tests/compiler/resolve-new.optimized.wat +++ b/tests/compiler/resolve-new.optimized.wat @@ -7,7 +7,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $resolve-new/foo (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -77,7 +77,7 @@ i32.store offset=12 local.get $1 ) - (func $start (; 2 ;) + (func $~start (; 2 ;) i32.const 16 global.set $~lib/rt/stub/startOffset i32.const 16 diff --git a/tests/compiler/resolve-new.untouched.wat b/tests/compiler/resolve-new.untouched.wat index 4dd064abbb..e4bd8ae438 100644 --- a/tests/compiler/resolve-new.untouched.wat +++ b/tests/compiler/resolve-new.untouched.wat @@ -10,7 +10,7 @@ (global $resolve-new/foo (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -161,7 +161,7 @@ local.get $0 call $~lib/rt/stub/__release ) - (func $start (; 7 ;) + (func $~start (; 7 ;) call $start:resolve-new ) ) diff --git a/tests/compiler/resolve-propertyaccess.optimized.wat b/tests/compiler/resolve-propertyaccess.optimized.wat index a86c2f593f..7d81ff4392 100644 --- a/tests/compiler/resolve-propertyaccess.optimized.wat +++ b/tests/compiler/resolve-propertyaccess.optimized.wat @@ -23,7 +23,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) i32.const 1 i32.const 2 @@ -484,7 +484,7 @@ unreachable end ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:resolve-propertyaccess ) ) diff --git a/tests/compiler/resolve-propertyaccess.untouched.wat b/tests/compiler/resolve-propertyaccess.untouched.wat index 486a72d74f..3df95e0a47 100644 --- a/tests/compiler/resolve-propertyaccess.untouched.wat +++ b/tests/compiler/resolve-propertyaccess.untouched.wat @@ -37,7 +37,7 @@ (global $resolve-propertyaccess/Class.lazyStaticField (mut i32) (i32.const 55)) (global $~lib/heap/__heap_base i32 (i32.const 884)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -831,7 +831,7 @@ local.get $8 call $~lib/rt/stub/__release ) - (func $start (; 15 ;) + (func $~start (; 15 ;) call $start:resolve-propertyaccess ) ) diff --git a/tests/compiler/resolve-ternary.optimized.wat b/tests/compiler/resolve-ternary.optimized.wat index 493eb2a697..10ff8059ae 100644 --- a/tests/compiler/resolve-ternary.optimized.wat +++ b/tests/compiler/resolve-ternary.optimized.wat @@ -52,7 +52,7 @@ (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -2960,7 +2960,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start (; 40 ;) + (func $~start (; 40 ;) call $start:resolve-ternary ) (func $~lib/rt/pure/__visit (; 41 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/resolve-ternary.untouched.wat b/tests/compiler/resolve-ternary.untouched.wat index ae9bd9b726..02aaa3dcf5 100644 --- a/tests/compiler/resolve-ternary.untouched.wat +++ b/tests/compiler/resolve-ternary.untouched.wat @@ -67,7 +67,7 @@ (export "__release" (func $~lib/rt/pure/__release)) (export "__collect" (func $~lib/rt/pure/__collect)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -5299,7 +5299,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 48 ;) + (func $~start (; 48 ;) call $start:resolve-ternary ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/resolve-unary.optimized.wat b/tests/compiler/resolve-unary.optimized.wat index 0eb1f63845..2f8c559ea7 100644 --- a/tests/compiler/resolve-unary.optimized.wat +++ b/tests/compiler/resolve-unary.optimized.wat @@ -31,7 +31,7 @@ (global $resolve-unary/foo (mut i32) (i32.const 0)) (global $resolve-unary/bar (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) i32.const 1 i32.const 2 @@ -633,7 +633,7 @@ unreachable end ) - (func $start (; 11 ;) + (func $~start (; 11 ;) call $start:resolve-unary ) ) diff --git a/tests/compiler/resolve-unary.untouched.wat b/tests/compiler/resolve-unary.untouched.wat index 3fb47d489a..b188d61cc7 100644 --- a/tests/compiler/resolve-unary.untouched.wat +++ b/tests/compiler/resolve-unary.untouched.wat @@ -36,7 +36,7 @@ (global $resolve-unary/bar (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 984)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/number/decimalCount32 (; 1 ;) (param $0 i32) (result i32) (local $1 i32) local.get $0 @@ -1254,7 +1254,7 @@ local.get $32 call $~lib/rt/stub/__release ) - (func $start (; 31 ;) + (func $~start (; 31 ;) call $start:resolve-unary ) ) diff --git a/tests/compiler/retain-i32.optimized.wat b/tests/compiler/retain-i32.optimized.wat index fa8b67a366..b27a25c7be 100644 --- a/tests/compiler/retain-i32.optimized.wat +++ b/tests/compiler/retain-i32.optimized.wat @@ -6,7 +6,7 @@ (global $retain-i32/ui (mut i32) (i32.const 0)) (global $retain-i32/ri (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:retain-i32 (; 0 ;) (local $0 i32) i32.const -128 @@ -66,7 +66,7 @@ i32.load8_s drop ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:retain-i32 ) ) diff --git a/tests/compiler/retain-i32.untouched.wat b/tests/compiler/retain-i32.untouched.wat index e72e098c2d..59e6f12e87 100644 --- a/tests/compiler/retain-i32.untouched.wat +++ b/tests/compiler/retain-i32.untouched.wat @@ -19,7 +19,7 @@ (global $retain-i32/ui (mut i32) (i32.const 0)) (global $retain-i32/ri (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $retain-i32/test (; 1 ;) (param $0 i32) (param $1 i32) local.get $0 local.get $1 @@ -797,7 +797,7 @@ global.set $retain-i32/ri call $retain-i32/testLocalRetain ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:retain-i32 ) ) diff --git a/tests/compiler/retain-release-sanity.optimized.wat b/tests/compiler/retain-release-sanity.optimized.wat index 77f9e048b0..4357add3f6 100644 --- a/tests/compiler/retain-release-sanity.optimized.wat +++ b/tests/compiler/retain-release-sanity.optimized.wat @@ -35,7 +35,7 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -2603,7 +2603,7 @@ call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) - (func $start (; 42 ;) + (func $~start (; 42 ;) call $start:retain-release-sanity ) (func $~lib/rt/pure/__visit (; 43 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/retain-release-sanity.untouched.wat b/tests/compiler/retain-release-sanity.untouched.wat index 3e3214f4a7..0ddb8646a5 100644 --- a/tests/compiler/retain-release-sanity.untouched.wat +++ b/tests/compiler/retain-release-sanity.untouched.wat @@ -40,7 +40,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 640)) (global $~lib/heap/__heap_base i32 (i32.const 708)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -4324,7 +4324,7 @@ call $~lib/rt/pure/__release call $~lib/rt/pure/__collect ) - (func $start (; 48 ;) + (func $~start (; 48 ;) call $start:retain-release-sanity ) (func $~lib/array/Array#__visit_impl (; 49 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/retain-release.optimized.wat b/tests/compiler/retain-release.optimized.wat index cce73ce0ba..8da75224ae 100644 --- a/tests/compiler/retain-release.optimized.wat +++ b/tests/compiler/retain-release.optimized.wat @@ -18,7 +18,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) (export "receiveRef" (func $retain-release/receiveRef)) @@ -240,7 +240,7 @@ call_indirect (type $none_=>_i32) drop ) - (func $start (; 16 ;) + (func $~start (; 16 ;) (local $0 i32) global.get $~started if diff --git a/tests/compiler/retain-release.untouched.wat b/tests/compiler/retain-release.untouched.wat index b91746a3e7..6a7fbd0220 100644 --- a/tests/compiler/retain-release.untouched.wat +++ b/tests/compiler/retain-release.untouched.wat @@ -19,7 +19,7 @@ (global $~started (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 100)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "returnRef" (func $retain-release/returnRef)) (export "receiveRef" (func $retain-release/receiveRef)) @@ -799,7 +799,7 @@ call_indirect (type $none_=>_i32) call $~lib/rt/stub/__release ) - (func $start (; 45 ;) + (func $~start (; 45 ;) global.get $~started if return diff --git a/tests/compiler/retain-return.optimized.wat b/tests/compiler/retain-return.optimized.wat index d5578e8edc..9aea6357c7 100644 --- a/tests/compiler/retain-return.optimized.wat +++ b/tests/compiler/retain-return.optimized.wat @@ -24,7 +24,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -1800,7 +1800,7 @@ local.get $1 global.set $retain-return/ref ) - (func $start (; 28 ;) + (func $~start (; 28 ;) global.get $~started if return diff --git a/tests/compiler/retain-return.untouched.wat b/tests/compiler/retain-return.untouched.wat index 931f72995d..a948bf28ef 100644 --- a/tests/compiler/retain-return.untouched.wat +++ b/tests/compiler/retain-return.untouched.wat @@ -37,7 +37,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 288)) (global $~lib/heap/__heap_base i32 (i32.const 324)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 1 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -3379,7 +3379,7 @@ local.get $0 global.set $retain-return/ref ) - (func $start (; 38 ;) + (func $~start (; 38 ;) global.get $~started if return diff --git a/tests/compiler/rt/flags.optimized.wat b/tests/compiler/rt/flags.optimized.wat index db0fc32944..c734ebc185 100644 --- a/tests/compiler/rt/flags.optimized.wat +++ b/tests/compiler/rt/flags.optimized.wat @@ -13,7 +13,7 @@ (data (i32.const 684) "\88\04A") (data (i32.const 700) "\88 \t\00\00\00\00\00\10\00\00\00\00\00\00\00\10") (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/__typeinfo (; 1 ;) (param $0 i32) (result i32) local.get $0 i32.const 176 @@ -328,7 +328,7 @@ call $~lib/builtins/abort unreachable ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:rt/flags ) ) diff --git a/tests/compiler/rt/flags.untouched.wat b/tests/compiler/rt/flags.untouched.wat index cc5bbfb02f..aa772e7d7b 100644 --- a/tests/compiler/rt/flags.untouched.wat +++ b/tests/compiler/rt/flags.untouched.wat @@ -14,7 +14,7 @@ (global $rt/flags/KEY_ALIGN_REF i32 (i32.const 65536)) (global $~lib/rt/__rtti_base i32 (i32.const 176)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/__typeinfo (; 1 ;) (param $0 i32) (result i32) (local $1 i32) global.get $~lib/rt/__rtti_base @@ -1395,7 +1395,7 @@ i32.const 16 call $rt/flags/test ) - (func $start (; 62 ;) + (func $~start (; 62 ;) call $start:rt/flags ) ) diff --git a/tests/compiler/rt/instanceof.optimized.wat b/tests/compiler/rt/instanceof.optimized.wat index aee357cf6c..f9f8c106c8 100644 --- a/tests/compiler/rt/instanceof.optimized.wat +++ b/tests/compiler/rt/instanceof.optimized.wat @@ -18,7 +18,7 @@ (global $rt/instanceof/nullableCat (mut i32) (i32.const 0)) (global $rt/instanceof/nullableBlackcat (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) @@ -425,7 +425,7 @@ unreachable end ) - (func $start (; 8 ;) + (func $~start (; 8 ;) global.get $~started if return diff --git a/tests/compiler/rt/instanceof.untouched.wat b/tests/compiler/rt/instanceof.untouched.wat index 2a483f711f..74c87d9867 100644 --- a/tests/compiler/rt/instanceof.untouched.wat +++ b/tests/compiler/rt/instanceof.untouched.wat @@ -23,7 +23,7 @@ (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 64)) (global $~lib/heap/__heap_base i32 (i32.const 116)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) @@ -677,7 +677,7 @@ unreachable end ) - (func $start (; 9 ;) + (func $~start (; 9 ;) global.get $~started if return diff --git a/tests/compiler/rt/stub-realloc.optimized.wat b/tests/compiler/rt/stub-realloc.optimized.wat index e8f2b271a2..5a7324aad9 100644 --- a/tests/compiler/rt/stub-realloc.optimized.wat +++ b/tests/compiler/rt/stub-realloc.optimized.wat @@ -17,7 +17,7 @@ (global $rt/stub-realloc/newLastPtr (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 128)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -587,7 +587,7 @@ unreachable end ) - (func $start (; 11 ;) + (func $~start (; 11 ;) global.get $~started if return diff --git a/tests/compiler/rt/stub-realloc.untouched.wat b/tests/compiler/rt/stub-realloc.untouched.wat index f3c341dc97..6d325d96b2 100644 --- a/tests/compiler/rt/stub-realloc.untouched.wat +++ b/tests/compiler/rt/stub-realloc.untouched.wat @@ -20,7 +20,7 @@ (global $~started (mut i32) (i32.const 0)) (global $~lib/rt/__rtti_base i32 (i32.const 128)) (global $~lib/heap/__heap_base i32 (i32.const 156)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "__alloc" (func $~lib/rt/stub/__alloc)) (export "__retain" (func $~lib/rt/stub/__retain)) @@ -1709,7 +1709,7 @@ unreachable end ) - (func $start (; 12 ;) + (func $~start (; 12 ;) global.get $~started if return diff --git a/tests/compiler/runtime-stub.optimized.wat b/tests/compiler/runtime-stub.optimized.wat index f791ad25de..4647e2d833 100644 --- a/tests/compiler/runtime-stub.optimized.wat +++ b/tests/compiler/runtime-stub.optimized.wat @@ -15,7 +15,7 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -116,7 +116,7 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $start (; 6 ;) + (func $~start (; 6 ;) i32.const 48 global.set $~lib/rt/stub/startOffset i32.const 48 diff --git a/tests/compiler/runtime-stub.untouched.wat b/tests/compiler/runtime-stub.untouched.wat index 8ce1ed926a..75c880414a 100644 --- a/tests/compiler/runtime-stub.untouched.wat +++ b/tests/compiler/runtime-stub.untouched.wat @@ -17,7 +17,7 @@ (export "__collect" (func $~lib/rt/stub/__collect)) (export "__reset" (func $~lib/rt/stub/__reset)) (export "__rtti_base" (global $~lib/rt/__rtti_base)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -138,7 +138,7 @@ global.get $~lib/rt/stub/startOffset global.set $~lib/rt/stub/offset ) - (func $start (; 6 ;) + (func $~start (; 6 ;) global.get $~lib/heap/__heap_base i32.const 15 i32.add diff --git a/tests/compiler/scoped.optimized.wat b/tests/compiler/scoped.optimized.wat index c3b9257dbb..9d34a26fd3 100644 --- a/tests/compiler/scoped.optimized.wat +++ b/tests/compiler/scoped.optimized.wat @@ -2,7 +2,7 @@ (type $none_=>_none (func)) (memory $0 0) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:scoped (; 0 ;) (local $0 i32) loop $for-loop|0 @@ -32,7 +32,7 @@ end end ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:scoped ) ) diff --git a/tests/compiler/scoped.untouched.wat b/tests/compiler/scoped.untouched.wat index a29646b6ed..8880780146 100644 --- a/tests/compiler/scoped.untouched.wat +++ b/tests/compiler/scoped.untouched.wat @@ -7,7 +7,7 @@ (global $scoped/aConstant i32 (i32.const 3)) (global $scoped/aStartFunctionLocal (mut i32) (i32.const 2)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $scoped/fn (; 0 ;) (param $0 i32) (local $1 i32) i32.const 0 @@ -63,7 +63,7 @@ i32.const 42 call $scoped/fn ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:scoped ) ) diff --git a/tests/compiler/static-this.untouched.wat b/tests/compiler/static-this.untouched.wat index ecf4ae1648..0bf6583a39 100644 --- a/tests/compiler/static-this.untouched.wat +++ b/tests/compiler/static-this.untouched.wat @@ -8,7 +8,7 @@ (table $0 1 funcref) (global $static-this/Foo.bar (mut i32) (i32.const 42)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $static-this/Foo.getBar (; 1 ;) (result i32) global.get $static-this/Foo.bar ) @@ -26,7 +26,7 @@ unreachable end ) - (func $start (; 3 ;) + (func $~start (; 3 ;) call $start:static-this ) ) diff --git a/tests/compiler/std/array-literal.optimized.wat b/tests/compiler/std/array-literal.optimized.wat index 1b5bacd86f..9a23c4066f 100644 --- a/tests/compiler/std/array-literal.optimized.wat +++ b/tests/compiler/std/array-literal.optimized.wat @@ -39,7 +39,7 @@ (global $std/array-literal/dynamicArrayRefWithCtor (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/array/Array#__get (; 5 ;) (param $0 i32) (param $1 i32) (result i32) local.get $1 local.get $0 @@ -2221,7 +2221,7 @@ local.get $0 call $~lib/rt/pure/__release ) - (func $start (; 36 ;) + (func $~start (; 36 ;) call $start:std/array-literal ) (func $~lib/rt/pure/__visit (; 37 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/array-literal.untouched.wat b/tests/compiler/std/array-literal.untouched.wat index cbd7c80bcf..44da5ed355 100644 --- a/tests/compiler/std/array-literal.untouched.wat +++ b/tests/compiler/std/array-literal.untouched.wat @@ -48,7 +48,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 576)) (global $~lib/heap/__heap_base i32 (i32.const 652)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/array/Array#get:length (; 5 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -3832,7 +3832,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $start (; 44 ;) + (func $~start (; 44 ;) call $start:std/array-literal ) (func $~lib/array/Array#__visit_impl (; 45 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/array.optimized.wat b/tests/compiler/std/array.optimized.wat index e0cab2f4f3..52407486b8 100644 --- a/tests/compiler/std/array.optimized.wat +++ b/tests/compiler/std/array.optimized.wat @@ -243,7 +243,7 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -16240,7 +16240,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $start (; 203 ;) + (func $~start (; 203 ;) global.get $~started if return diff --git a/tests/compiler/std/array.untouched.wat b/tests/compiler/std/array.untouched.wat index 3d4719bce0..615b652d86 100644 --- a/tests/compiler/std/array.untouched.wat +++ b/tests/compiler/std/array.untouched.wat @@ -250,7 +250,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 8896)) (global $~lib/heap/__heap_base i32 (i32.const 9108)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -24201,7 +24201,7 @@ local.get $65 call $~lib/rt/pure/__release ) - (func $start (; 316 ;) + (func $~start (; 316 ;) global.get $~started if return diff --git a/tests/compiler/std/arraybuffer.optimized.wat b/tests/compiler/std/arraybuffer.optimized.wat index 31046b19cb..45f6d044aa 100644 --- a/tests/compiler/std/arraybuffer.optimized.wat +++ b/tests/compiler/std/arraybuffer.optimized.wat @@ -33,7 +33,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -2429,7 +2429,7 @@ local.get $3 call $~lib/rt/pure/__release ) - (func $start (; 37 ;) + (func $~start (; 37 ;) call $start:std/arraybuffer ) (func $~lib/rt/pure/__visit (; 38 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/arraybuffer.untouched.wat b/tests/compiler/std/arraybuffer.untouched.wat index 961d0239bf..4557a886b9 100644 --- a/tests/compiler/std/arraybuffer.untouched.wat +++ b/tests/compiler/std/arraybuffer.untouched.wat @@ -39,7 +39,7 @@ (global $~lib/heap/__heap_base i32 (i32.const 676)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -4378,7 +4378,7 @@ local.get $5 call $~lib/rt/pure/__release ) - (func $start (; 51 ;) + (func $~start (; 51 ;) call $start:std/arraybuffer ) (func $~lib/array/Array#__visit_impl (; 52 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/dataview.optimized.wat b/tests/compiler/std/dataview.optimized.wat index 13422a8ea5..c5df210c4f 100644 --- a/tests/compiler/std/dataview.optimized.wat +++ b/tests/compiler/std/dataview.optimized.wat @@ -40,7 +40,7 @@ (global $~argumentsLength (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -4123,7 +4123,7 @@ local.get $2 call $~lib/rt/pure/__release ) - (func $start (; 62 ;) + (func $~start (; 62 ;) call $start:std/dataview ) (func $~lib/rt/pure/__visit (; 63 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/dataview.untouched.wat b/tests/compiler/std/dataview.untouched.wat index c1b344e758..aeeab0af52 100644 --- a/tests/compiler/std/dataview.untouched.wat +++ b/tests/compiler/std/dataview.untouched.wat @@ -46,7 +46,7 @@ (global $~lib/heap/__heap_base i32 (i32.const 604)) (export "__argumentsLength" (global $~argumentsLength)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -6233,7 +6233,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 67 ;) + (func $~start (; 67 ;) call $start:std/dataview ) (func $~lib/rt/pure/__visit (; 68 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/date.optimized.wat b/tests/compiler/std/date.optimized.wat index ba1a223780..3439d7507a 100644 --- a/tests/compiler/std/date.optimized.wat +++ b/tests/compiler/std/date.optimized.wat @@ -15,7 +15,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/date/date (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -206,7 +206,7 @@ unreachable end ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:std/date ) ) diff --git a/tests/compiler/std/date.untouched.wat b/tests/compiler/std/date.untouched.wat index 1079479214..c1bc2fa6c9 100644 --- a/tests/compiler/std/date.untouched.wat +++ b/tests/compiler/std/date.untouched.wat @@ -21,7 +21,7 @@ (global $std/date/date (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 56)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 3 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -337,7 +337,7 @@ unreachable end ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:std/date ) ) diff --git a/tests/compiler/std/hash.optimized.wat b/tests/compiler/std/hash.optimized.wat index c87a5f46fa..db2556137b 100644 --- a/tests/compiler/std/hash.optimized.wat +++ b/tests/compiler/std/hash.optimized.wat @@ -7,7 +7,7 @@ (data (i32.const 64) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") (data (i32.const 96) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c") (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/util/hash/hashStr (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -51,7 +51,7 @@ end end ) - (func $start (; 1 ;) + (func $~start (; 1 ;) i32.const 0 call $~lib/util/hash/hashStr i32.const 32 diff --git a/tests/compiler/std/hash.untouched.wat b/tests/compiler/std/hash.untouched.wat index bc48bec29a..18b53a3def 100644 --- a/tests/compiler/std/hash.untouched.wat +++ b/tests/compiler/std/hash.untouched.wat @@ -10,7 +10,7 @@ (data (i32.const 96) "\06\00\00\00\01\00\00\00\01\00\00\00\06\00\00\00a\00b\00c\00") (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/__retain (; 0 ;) (param $0 i32) (result i32) local.get $0 ) @@ -401,7 +401,7 @@ call $std/hash/check drop ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:std/hash ) ) diff --git a/tests/compiler/std/map.optimized.wat b/tests/compiler/std/map.optimized.wat index 4091f798e7..47b8e4b16f 100644 --- a/tests/compiler/std/map.optimized.wat +++ b/tests/compiler/std/map.optimized.wat @@ -54,7 +54,7 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -13112,7 +13112,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 168 ;) + (func $~start (; 168 ;) call $std/map/testNumeric call $std/map/testNumeric call $std/map/testNumeric diff --git a/tests/compiler/std/map.untouched.wat b/tests/compiler/std/map.untouched.wat index 41b3bf8332..97feb4b9f0 100644 --- a/tests/compiler/std/map.untouched.wat +++ b/tests/compiler/std/map.untouched.wat @@ -56,7 +56,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 608)) (global $~lib/heap/__heap_base i32 (i32.const 868)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -19755,7 +19755,7 @@ call $std/map/testNumeric call $std/map/testNumeric ) - (func $start (; 286 ;) + (func $~start (; 286 ;) call $start:std/map ) (func $~lib/rt/pure/__visit (; 287 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/math.optimized.wat b/tests/compiler/std/math.optimized.wat index 97f2c4bbaa..6cd3a4d2b9 100644 --- a/tests/compiler/std/math.optimized.wat +++ b/tests/compiler/std/math.optimized.wat @@ -99,7 +99,7 @@ (global $~lib/math/NativeMath.sincos_sin (mut f64) (f64.const 0)) (global $~lib/math/NativeMath.sincos_cos (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/math/NativeMath.scalbn (; 32 ;) (param $0 f64) (param $1 i32) (result f64) local.get $1 i32.const 1023 @@ -46674,7 +46674,7 @@ unreachable end ) - (func $start (; 176 ;) + (func $~start (; 176 ;) call $start:std/math ) ) diff --git a/tests/compiler/std/math.untouched.wat b/tests/compiler/std/math.untouched.wat index 30f927cc7c..b5957c3e41 100644 --- a/tests/compiler/std/math.untouched.wat +++ b/tests/compiler/std/math.untouched.wat @@ -154,7 +154,7 @@ (global $~lib/builtins/f64.EPSILON f64 (f64.const 2.220446049250313e-16)) (global $~lib/builtins/f32.MIN_VALUE f32 (f32.const 1.401298464324817e-45)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $std/math/eulp (; 32 ;) (param $0 f64) (result i32) (local $1 i64) (local $2 i32) @@ -55397,7 +55397,7 @@ unreachable end ) - (func $start (; 178 ;) + (func $~start (; 178 ;) call $start:std/math ) ) diff --git a/tests/compiler/std/mod.optimized.wat b/tests/compiler/std/mod.optimized.wat index 910c94e6d1..e62f33511e 100644 --- a/tests/compiler/std/mod.optimized.wat +++ b/tests/compiler/std/mod.optimized.wat @@ -13,7 +13,7 @@ (data (i32.const 16) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00s\00t\00d\00/\00m\00o\00d\00.\00t\00s") (export "memory" (memory $0)) (export "mod" (func $std/mod/mod)) - (start $start) + (start $~start) (func $~lib/math/NativeMath.mod (; 2 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) @@ -2243,7 +2243,7 @@ unreachable end ) - (func $start (; 9 ;) + (func $~start (; 9 ;) call $start:std/mod ) ) diff --git a/tests/compiler/std/mod.untouched.wat b/tests/compiler/std/mod.untouched.wat index d335d24ed6..4f86aaf533 100644 --- a/tests/compiler/std/mod.untouched.wat +++ b/tests/compiler/std/mod.untouched.wat @@ -15,7 +15,7 @@ (global $std/mod/js i32 (i32.const 1)) (export "memory" (memory $0)) (export "mod" (func $std/mod/mod)) - (start $start) + (start $~start) (func $~lib/math/NativeMath.mod (; 2 ;) (param $0 f64) (param $1 f64) (result f64) (local $2 i64) (local $3 i64) @@ -2360,7 +2360,7 @@ unreachable end ) - (func $start (; 9 ;) + (func $~start (; 9 ;) call $start:std/mod ) ) diff --git a/tests/compiler/std/new.optimized.wat b/tests/compiler/std/new.optimized.wat index bd98eecb00..04f4800a66 100644 --- a/tests/compiler/std/new.optimized.wat +++ b/tests/compiler/std/new.optimized.wat @@ -7,7 +7,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $std/new/aClass (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -97,7 +97,7 @@ f32.store offset=4 local.get $0 ) - (func $start (; 3 ;) + (func $~start (; 3 ;) i32.const 16 global.set $~lib/rt/stub/startOffset i32.const 16 diff --git a/tests/compiler/std/new.untouched.wat b/tests/compiler/std/new.untouched.wat index 4f9792186a..d72a407ed0 100644 --- a/tests/compiler/std/new.untouched.wat +++ b/tests/compiler/std/new.untouched.wat @@ -12,7 +12,7 @@ (global $std/new/aClass (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 8)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 0 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -166,7 +166,7 @@ call $std/new/AClass#constructor global.set $std/new/aClass ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:std/new ) ) diff --git a/tests/compiler/std/object-literal.optimized.wat b/tests/compiler/std/object-literal.optimized.wat index d4dadb8fa6..97d0bbb311 100644 --- a/tests/compiler/std/object-literal.optimized.wat +++ b/tests/compiler/std/object-literal.optimized.wat @@ -11,7 +11,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -292,7 +292,7 @@ unreachable end ) - (func $start (; 8 ;) + (func $~start (; 8 ;) call $start:std/object-literal ) ) diff --git a/tests/compiler/std/object-literal.untouched.wat b/tests/compiler/std/object-literal.untouched.wat index e022022e6b..ff967f734b 100644 --- a/tests/compiler/std/object-literal.untouched.wat +++ b/tests/compiler/std/object-literal.untouched.wat @@ -15,7 +15,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 124)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -454,7 +454,7 @@ local.get $2 call $~lib/rt/stub/__release ) - (func $start (; 12 ;) + (func $~start (; 12 ;) call $start:std/object-literal ) ) diff --git a/tests/compiler/std/object.optimized.wat b/tests/compiler/std/object.optimized.wat index 4c664d7941..20edf44326 100644 --- a/tests/compiler/std/object.optimized.wat +++ b/tests/compiler/std/object.optimized.wat @@ -14,7 +14,7 @@ (data (i32.const 128) "\04\00\00\00\01\00\00\00\01\00\00\00\04\00\00\00a\00b") (data (i32.const 164) "\01\00\00\00\01") (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/object/Object.is (; 1 ;) (param $0 f64) (param $1 f64) (result i32) local.get $0 local.get $1 @@ -664,7 +664,7 @@ unreachable end ) - (func $start (; 10 ;) + (func $~start (; 10 ;) call $start:std/object ) ) diff --git a/tests/compiler/std/object.untouched.wat b/tests/compiler/std/object.untouched.wat index 7957fe3e63..f43f30d0b9 100644 --- a/tests/compiler/std/object.untouched.wat +++ b/tests/compiler/std/object.untouched.wat @@ -17,7 +17,7 @@ (table $0 1 funcref) (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/object/Object.is (; 1 ;) (param $0 f64) (param $1 f64) (result i32) local.get $0 local.get $1 @@ -886,7 +886,7 @@ unreachable end ) - (func $start (; 14 ;) + (func $~start (; 14 ;) call $start:std/object ) ) diff --git a/tests/compiler/std/operator-overloading.optimized.wat b/tests/compiler/std/operator-overloading.optimized.wat index acaeaadd73..5ff93ba6c8 100644 --- a/tests/compiler/std/operator-overloading.optimized.wat +++ b/tests/compiler/std/operator-overloading.optimized.wat @@ -78,7 +78,7 @@ (global $std/operator-overloading/aii2 (mut i32) (i32.const 0)) (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -2377,7 +2377,7 @@ unreachable end ) - (func $start (; 12 ;) + (func $~start (; 12 ;) call $start:std/operator-overloading ) ) diff --git a/tests/compiler/std/operator-overloading.untouched.wat b/tests/compiler/std/operator-overloading.untouched.wat index c671a12303..baa6e99a19 100644 --- a/tests/compiler/std/operator-overloading.untouched.wat +++ b/tests/compiler/std/operator-overloading.untouched.wat @@ -92,7 +92,7 @@ (global $std/operator-overloading/aii (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 6336)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/maybeGrowMemory (; 1 ;) (param $0 i32) (local $1 i32) (local $2 i32) @@ -3042,7 +3042,7 @@ local.get $22 call $~lib/rt/stub/__release ) - (func $start (; 36 ;) + (func $~start (; 36 ;) call $start:std/operator-overloading ) ) diff --git a/tests/compiler/std/pointer.optimized.wat b/tests/compiler/std/pointer.optimized.wat index 441da7a3fe..6d695441d9 100644 --- a/tests/compiler/std/pointer.optimized.wat +++ b/tests/compiler/std/pointer.optimized.wat @@ -13,7 +13,7 @@ (global $std/pointer/nextOne (mut i32) (i32.const 0)) (global $std/pointer/buf (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/memory/memory.fill (; 1 ;) (param $0 i32) (local $1 i32) local.get $0 @@ -596,7 +596,7 @@ unreachable end ) - (func $start (; 4 ;) + (func $~start (; 4 ;) call $start:std/pointer ) ) diff --git a/tests/compiler/std/pointer.untouched.wat b/tests/compiler/std/pointer.untouched.wat index 1fd979d04a..1a02e397ba 100644 --- a/tests/compiler/std/pointer.untouched.wat +++ b/tests/compiler/std/pointer.untouched.wat @@ -16,7 +16,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $std/pointer/buf (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/__retain (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -2197,7 +2197,7 @@ local.get $5 call $~lib/rt/stub/__release ) - (func $start (; 7 ;) + (func $~start (; 7 ;) call $start:std/pointer ) ) diff --git a/tests/compiler/std/polyfills.untouched.wat b/tests/compiler/std/polyfills.untouched.wat index b10c556315..0267eb75e0 100644 --- a/tests/compiler/std/polyfills.untouched.wat +++ b/tests/compiler/std/polyfills.untouched.wat @@ -8,7 +8,7 @@ (data (i32.const 16) " \00\00\00\01\00\00\00\01\00\00\00 \00\00\00s\00t\00d\00/\00p\00o\00l\00y\00f\00i\00l\00l\00s\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/polyfills/bswap (; 1 ;) (param $0 i32) (result i32) local.get $0 return @@ -489,7 +489,7 @@ unreachable end ) - (func $start (; 18 ;) + (func $~start (; 18 ;) call $start:std/polyfills ) ) diff --git a/tests/compiler/std/set.optimized.wat b/tests/compiler/std/set.optimized.wat index 138bfa2c89..70b5c7554c 100644 --- a/tests/compiler/std/set.optimized.wat +++ b/tests/compiler/std/set.optimized.wat @@ -46,7 +46,7 @@ (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) (global $~lib/rt/pure/END (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -9317,7 +9317,7 @@ local.get $1 call $~lib/rt/pure/__release ) - (func $start (; 124 ;) + (func $~start (; 124 ;) call $std/set/testNumeric call $std/set/testNumeric call $std/set/testNumeric diff --git a/tests/compiler/std/set.untouched.wat b/tests/compiler/std/set.untouched.wat index 89a6ec2c22..9557c96c67 100644 --- a/tests/compiler/std/set.untouched.wat +++ b/tests/compiler/std/set.untouched.wat @@ -51,7 +51,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 496)) (global $~lib/heap/__heap_base i32 (i32.const 684)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/tlsf/removeBlock (; 5 ;) (param $0 i32) (param $1 i32) (local $2 i32) (local $3 i32) @@ -13640,7 +13640,7 @@ call $std/set/testNumeric call $std/set/testNumeric ) - (func $start (; 202 ;) + (func $~start (; 202 ;) call $start:std/set ) (func $~lib/rt/pure/__visit (; 203 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/static-array.optimized.wat b/tests/compiler/std/static-array.optimized.wat index 1017744326..916f5a9d87 100644 --- a/tests/compiler/std/static-array.optimized.wat +++ b/tests/compiler/std/static-array.optimized.wat @@ -28,7 +28,7 @@ (global $~lib/rt/stub/startOffset (mut i32) (i32.const 0)) (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/array/Array#__get (; 1 ;) (param $0 i32) (result i32) local.get $0 i32.const 76 @@ -1025,7 +1025,7 @@ unreachable end ) - (func $start (; 16 ;) + (func $~start (; 16 ;) call $start:std/static-array ) ) diff --git a/tests/compiler/std/static-array.untouched.wat b/tests/compiler/std/static-array.untouched.wat index 16a68f40f0..18506aa88f 100644 --- a/tests/compiler/std/static-array.untouched.wat +++ b/tests/compiler/std/static-array.untouched.wat @@ -36,7 +36,7 @@ (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 544)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/array/Array#get:length (; 1 ;) (param $0 i32) (result i32) local.get $0 i32.load offset=12 @@ -2399,7 +2399,7 @@ unreachable end ) - (func $start (; 30 ;) + (func $~start (; 30 ;) call $start:std/static-array ) ) diff --git a/tests/compiler/std/string-encoding.optimized.wat b/tests/compiler/std/string-encoding.optimized.wat index 9f1bb4da20..f434a8a127 100644 --- a/tests/compiler/std/string-encoding.optimized.wat +++ b/tests/compiler/std/string-encoding.optimized.wat @@ -39,7 +39,7 @@ (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/pure/increment (; 5 ;) (param $0 i32) (local $1 i32) local.get $0 @@ -3669,7 +3669,7 @@ i32.const 13808 call $std/string-encoding/testLarge ) - (func $start (; 54 ;) + (func $~start (; 54 ;) call $start:std/string-encoding ) (func $~lib/rt/pure/__visit (; 55 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/string-encoding.untouched.wat b/tests/compiler/std/string-encoding.untouched.wat index e1cc932247..a1960240dc 100644 --- a/tests/compiler/std/string-encoding.untouched.wat +++ b/tests/compiler/std/string-encoding.untouched.wat @@ -46,7 +46,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 21168)) (global $~lib/heap/__heap_base i32 (i32.const 21196)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/pure/increment (; 5 ;) (param $0 i32) (local $1 i32) local.get $0 @@ -5480,7 +5480,7 @@ i32.const 13808 call $std/string-encoding/testLarge ) - (func $start (; 57 ;) + (func $~start (; 57 ;) call $start:std/string-encoding ) (func $~lib/rt/pure/__visit (; 58 ;) (param $0 i32) (param $1 i32) diff --git a/tests/compiler/std/string.optimized.wat b/tests/compiler/std/string.optimized.wat index f6d6c7cdc4..3c503dfc50 100644 --- a/tests/compiler/std/string.optimized.wat +++ b/tests/compiler/std/string.optimized.wat @@ -510,7 +510,7 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) (func $~lib/rt/pure/increment (; 8 ;) (param $0 i32) @@ -16676,7 +16676,7 @@ global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 96 ;) + (func $~start (; 96 ;) global.get $~started if return diff --git a/tests/compiler/std/string.untouched.wat b/tests/compiler/std/string.untouched.wat index 13b63d8d1a..2f42810f63 100644 --- a/tests/compiler/std/string.untouched.wat +++ b/tests/compiler/std/string.untouched.wat @@ -521,7 +521,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 28416)) (global $~lib/heap/__heap_base i32 (i32.const 28508)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (export "getString" (func $std/string/getString)) (func $~lib/rt/pure/increment (; 8 ;) (param $0 i32) @@ -20875,7 +20875,7 @@ global.get $std/string/str call $~lib/rt/pure/__retain ) - (func $start (; 108 ;) + (func $~start (; 108 ;) global.get $~started if return diff --git a/tests/compiler/std/symbol.optimized.wat b/tests/compiler/std/symbol.optimized.wat index 64400fc285..b035120cc0 100644 --- a/tests/compiler/std/symbol.optimized.wat +++ b/tests/compiler/std/symbol.optimized.wat @@ -51,7 +51,7 @@ (global $std/symbol/hasInstance (mut i32) (i32.const 0)) (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/symbol/Symbol (; 1 ;) (result i32) (local $0 i32) global.get $~lib/symbol/nextId @@ -1704,7 +1704,7 @@ unreachable end ) - (func $start (; 30 ;) + (func $~start (; 30 ;) call $start:std/symbol ) ) diff --git a/tests/compiler/std/symbol.untouched.wat b/tests/compiler/std/symbol.untouched.wat index 5d3af8d39b..2b8f16b117 100644 --- a/tests/compiler/std/symbol.untouched.wat +++ b/tests/compiler/std/symbol.untouched.wat @@ -56,7 +56,7 @@ (global $std/symbol/isConcatSpreadable (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 1092)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $~lib/rt/stub/__retain (; 1 ;) (param $0 i32) (result i32) local.get $0 ) @@ -3517,7 +3517,7 @@ local.get $3 call $~lib/rt/stub/__release ) - (func $start (; 35 ;) + (func $~start (; 35 ;) call $start:std/symbol ) ) diff --git a/tests/compiler/std/trace.optimized.wat b/tests/compiler/std/trace.optimized.wat index 11c8176809..2c3f342815 100644 --- a/tests/compiler/std/trace.optimized.wat +++ b/tests/compiler/std/trace.optimized.wat @@ -12,7 +12,7 @@ (data (i32.const 256) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00i\00n\00t") (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l") (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $start:std/trace (; 1 ;) i32.const 32 @@ -80,7 +80,7 @@ f64.const 5.5 call $~lib/builtins/trace ) - (func $start (; 2 ;) + (func $~start (; 2 ;) global.get $~started if return diff --git a/tests/compiler/std/trace.untouched.wat b/tests/compiler/std/trace.untouched.wat index c4a257f689..fb85d40631 100644 --- a/tests/compiler/std/trace.untouched.wat +++ b/tests/compiler/std/trace.untouched.wat @@ -13,7 +13,7 @@ (data (i32.const 288) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00f\00i\00v\00e\00_\00d\00b\00l\00") (table $0 1 funcref) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $start:std/trace (; 1 ;) i32.const 32 @@ -81,7 +81,7 @@ f64.const 5.5 call $~lib/builtins/trace ) - (func $start (; 2 ;) + (func $~start (; 2 ;) global.get $~started if return diff --git a/tests/compiler/std/typedarray.optimized.wat b/tests/compiler/std/typedarray.optimized.wat index 94d5fbf001..92645b24d3 100644 --- a/tests/compiler/std/typedarray.optimized.wat +++ b/tests/compiler/std/typedarray.optimized.wat @@ -214,7 +214,7 @@ (global $~lib/util/number/_exp_pow (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -34442,7 +34442,7 @@ local.get $7 call $~lib/rt/pure/__release ) - (func $start (; 521 ;) + (func $~start (; 521 ;) global.get $~started if return diff --git a/tests/compiler/std/typedarray.untouched.wat b/tests/compiler/std/typedarray.untouched.wat index 3672ad4cd5..62d39ac3a0 100644 --- a/tests/compiler/std/typedarray.untouched.wat +++ b/tests/compiler/std/typedarray.untouched.wat @@ -231,7 +231,7 @@ (global $~lib/rt/__rtti_base i32 (i32.const 7984)) (global $~lib/heap/__heap_base i32 (i32.const 8180)) (export "__argumentsLength" (global $~argumentsLength)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/tlsf/removeBlock (; 6 ;) (param $0 i32) (param $1 i32) (local $2 i32) @@ -53219,7 +53219,7 @@ local.get $18 call $~lib/rt/pure/__release ) - (func $start (; 706 ;) + (func $~start (; 706 ;) global.get $~started if return diff --git a/tests/compiler/switch.optimized.wat b/tests/compiler/switch.optimized.wat index 85d4ade310..0202f18225 100644 --- a/tests/compiler/switch.optimized.wat +++ b/tests/compiler/switch.optimized.wat @@ -6,7 +6,7 @@ (memory $0 1) (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s") (export "memory" (memory $0)) - (start $start) + (start $~start) (func $switch/doSwitch (; 1 ;) (param $0 i32) (result i32) block $case4|0 block $case2|0 @@ -394,7 +394,7 @@ unreachable end ) - (func $start (; 6 ;) + (func $~start (; 6 ;) call $start:switch ) ) diff --git a/tests/compiler/switch.untouched.wat b/tests/compiler/switch.untouched.wat index 4183fc3738..e10b4d7006 100644 --- a/tests/compiler/switch.untouched.wat +++ b/tests/compiler/switch.untouched.wat @@ -7,7 +7,7 @@ (data (i32.const 16) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00s\00w\00i\00t\00c\00h\00.\00t\00s\00") (table $0 1 funcref) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $switch/doSwitch (; 1 ;) (param $0 i32) (result i32) (local $1 i32) block $case4|0 @@ -548,7 +548,7 @@ unreachable end ) - (func $start (; 9 ;) + (func $~start (; 9 ;) call $start:switch ) ) diff --git a/tests/compiler/ternary.optimized.wat b/tests/compiler/ternary.optimized.wat index a8cf7e6479..b0e8026db7 100644 --- a/tests/compiler/ternary.optimized.wat +++ b/tests/compiler/ternary.optimized.wat @@ -3,8 +3,8 @@ (memory $0 0) (global $ternary/a (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 1 global.set $ternary/a i32.const 1 diff --git a/tests/compiler/ternary.untouched.wat b/tests/compiler/ternary.untouched.wat index b426c324ec..ce4e978dd6 100644 --- a/tests/compiler/ternary.untouched.wat +++ b/tests/compiler/ternary.untouched.wat @@ -4,7 +4,7 @@ (table $0 1 funcref) (global $ternary/a (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:ternary (; 0 ;) i32.const 1 drop @@ -19,7 +19,7 @@ i32.const 1 global.set $ternary/a ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:ternary ) ) diff --git a/tests/compiler/typeof.optimized.wat b/tests/compiler/typeof.optimized.wat index 4e98d73325..95ef342a17 100644 --- a/tests/compiler/typeof.optimized.wat +++ b/tests/compiler/typeof.optimized.wat @@ -20,7 +20,7 @@ (global $~lib/rt/stub/offset (mut i32) (i32.const 0)) (global $typeof/c (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/string/String#get:length (; 1 ;) (param $0 i32) (result i32) local.get $0 @@ -491,7 +491,7 @@ unreachable end ) - (func $start (; 7 ;) + (func $~start (; 7 ;) global.get $~started if return diff --git a/tests/compiler/typeof.untouched.wat b/tests/compiler/typeof.untouched.wat index 0ace79701f..d1c59de29b 100644 --- a/tests/compiler/typeof.untouched.wat +++ b/tests/compiler/typeof.untouched.wat @@ -31,7 +31,7 @@ (global $typeof/c (mut i32) (i32.const 0)) (global $~started (mut i32) (i32.const 0)) (global $~lib/heap/__heap_base i32 (i32.const 292)) - (export "_start" (func $start)) + (export "_start" (func $~start)) (export "memory" (memory $0)) (func $~lib/rt/stub/__retain (; 1 ;) (param $0 i32) (result i32) local.get $0 @@ -655,7 +655,7 @@ unreachable end ) - (func $start (; 11 ;) + (func $~start (; 11 ;) global.get $~started if return diff --git a/tests/compiler/unary.optimized.wat b/tests/compiler/unary.optimized.wat index 846e5a0bd3..3034744b16 100644 --- a/tests/compiler/unary.optimized.wat +++ b/tests/compiler/unary.optimized.wat @@ -6,7 +6,7 @@ (global $unary/f (mut f32) (f32.const 0)) (global $unary/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:unary (; 0 ;) (local $0 f32) (local $1 f64) @@ -230,7 +230,7 @@ local.get $1 global.set $unary/F ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:unary ) ) diff --git a/tests/compiler/unary.untouched.wat b/tests/compiler/unary.untouched.wat index 4fbdd9f38b..1ae9eab211 100644 --- a/tests/compiler/unary.untouched.wat +++ b/tests/compiler/unary.untouched.wat @@ -7,7 +7,7 @@ (global $unary/f (mut f32) (f32.const 0)) (global $unary/F (mut f64) (f64.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:unary (; 0 ;) (local $0 f64) (local $1 i32) @@ -379,7 +379,7 @@ local.get $0 global.set $unary/F ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:unary ) ) diff --git a/tests/compiler/void.untouched.wat b/tests/compiler/void.untouched.wat index 5c047ea730..45d8645e79 100644 --- a/tests/compiler/void.untouched.wat +++ b/tests/compiler/void.untouched.wat @@ -6,7 +6,7 @@ (global $void/u8Val1 (mut i32) (i32.const 1)) (global $void/u8Val2 (mut i32) (i32.const 255)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $void/anInt (; 0 ;) (result i32) i32.const 2 ) @@ -20,7 +20,7 @@ i32.add drop ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:void ) ) diff --git a/tests/compiler/wasi-snapshot.optimized.wat b/tests/compiler/wasi-snapshot.optimized.wat index cd0c60d446..3c61110b69 100644 --- a/tests/compiler/wasi-snapshot.optimized.wat +++ b/tests/compiler/wasi-snapshot.optimized.wat @@ -3,8 +3,8 @@ (memory $0 0) (global $wasi-snapshot/sig (mut i32) (i32.const 1)) (export "memory" (memory $0)) - (start $start) - (func $start (; 0 ;) + (start $~start) + (func $~start (; 0 ;) i32.const 9 global.set $wasi-snapshot/sig ) diff --git a/tests/compiler/wasi-snapshot.untouched.wat b/tests/compiler/wasi-snapshot.untouched.wat index 96de47fe13..94c6f7484f 100644 --- a/tests/compiler/wasi-snapshot.untouched.wat +++ b/tests/compiler/wasi-snapshot.untouched.wat @@ -8,12 +8,12 @@ (global $~lib/ASC_TARGET i32 (i32.const 0)) (global $wasi-snapshot/sig (mut i32) (i32.const 1)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:wasi-snapshot (; 0 ;) i32.const 9 global.set $wasi-snapshot/sig ) - (func $start (; 1 ;) + (func $~start (; 1 ;) call $start:wasi-snapshot ) ) diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index b024392d58..cb47705e0f 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -8,7 +8,7 @@ (global $while/m (mut i32) (i32.const 0)) (global $while/o (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:while (; 1 ;) (local $0 i32) loop $while-continue|0 @@ -173,7 +173,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:while ) ) diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index fe86f5ac7c..d64bfb9e59 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -9,7 +9,7 @@ (global $while/m (mut i32) (i32.const 0)) (global $while/o (mut i32) (i32.const 0)) (export "memory" (memory $0)) - (start $start) + (start $~start) (func $start:while (; 1 ;) (local $0 i32) (local $1 i32) @@ -201,7 +201,7 @@ unreachable end ) - (func $start (; 2 ;) + (func $~start (; 2 ;) call $start:while ) ) diff --git a/tests/compiler/wildcard-export.untouched.wat b/tests/compiler/wildcard-export.untouched.wat index a67d5ec370..03ecd3058b 100644 --- a/tests/compiler/wildcard-export.untouched.wat +++ b/tests/compiler/wildcard-export.untouched.wat @@ -11,7 +11,7 @@ (export "renamed_a" (global $export/a)) (export "renamed_b" (global $export/b)) (export "renamed_renamed_b" (global $export/b)) - (start $start) + (start $~start) (func $export/add (; 0 ;) (param $0 i32) (param $1 i32) (result i32) local.get $0 local.get $1 @@ -38,7 +38,7 @@ (func $start:wildcard-export (; 4 ;) call $start:rereexport ) - (func $start (; 5 ;) + (func $~start (; 5 ;) call $start:wildcard-export ) ) From 2db7a6129f9948b210cdf3459df7d6c5ecd2b512 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 13:25:22 +0100 Subject: [PATCH 15/19] remove unused decompiler and binary files non-functional anyway, but can be easily revived from git history if ever becoming a thing --- src/binary.ts | 301 ---------------- src/decompiler.ts | 899 ---------------------------------------------- src/index.ts | 10 - 3 files changed, 1210 deletions(-) delete mode 100644 src/binary.ts delete mode 100644 src/decompiler.ts diff --git a/src/binary.ts b/src/binary.ts deleted file mode 100644 index 43ac0e0543..0000000000 --- a/src/binary.ts +++ /dev/null @@ -1,301 +0,0 @@ -/** - * Binary format utilities. - * @module binary - *//***/ - -// TBD: Moving lib/parse here might make sense where the compiler has to evaluate WASM binaries on -// the fly, like when importing other WASM files through `import`. Module integration hasn't been -// specified, yet, though, and it somewhat conflicts with our dependency on Binaryen. - -/** WebAssembly section ids. */ -export enum SectionId { - /** A custom section with an explicit name. */ - Custom = 0, - /** Function types section. */ - Type = 1, - /** Imports section. */ - Import = 2, - /** Functions section. */ - Function = 3, - /** Tables section. */ - Table = 4, - /** Memories section. */ - Memory = 5, - /** Globals section. */ - Global = 6, - /** Exports section. */ - Export = 7, - /** Start function section. */ - Start = 8, - /** Table element section. */ - Element = 9, - /** Function code section. */ - Code = 10, - /** Memory segments section. */ - Data = 11 -} - -/** WebAssembly external kinds. */ -export enum ExternalKind { - /** External function. */ - Function = 0, - /** External table. */ - Table = 1, - /** External memory. */ - Memory = 2, - /** External global. */ - Global = 3 -} - -/** WebAssembly name section kinds. */ -export enum NameKind { - /** Module name. */ - Module = 0, - /** Function name. */ - Function = 1, - /** Local name. */ - Local = 2, - - // see: https://github.com/WebAssembly/design/pull/1064 - - /** Label name. */ - Label = 3, - /** Function type name. */ - Type = 4, - /** Table name. */ - Table = 5, - /** Memory name. */ - Memory = 6, - /** Global variable name. */ - Global = 7 -} - -/** WebAssembly types. */ -export enum Type { - i32 = 0x7F, - i64 = 0x7E, - f32 = 0x7D, - f64 = 0x7C, - anyfunc = 0x70, - func = 0x60, - none = 0x40 -} - -/** WebAssembly opcodes. */ -export enum Op { - unreachable = 0x00, - nop = 0x01, - block = 0x02, - loop = 0x03, - if_ = 0x04, - else_ = 0x05, - end = 0x0B, - br = 0x0C, - br_if = 0x0D, - br_table = 0x0E, - return_ = 0x0F, - call = 0x10, - call_indirect = 0x11, - drop = 0x1A, - select = 0x1B, - get_local = 0x20, - set_local = 0x21, - tee_local = 0x22, - get_global = 0x23, - set_global = 0x24, - i32_load = 0x28, - i64_load = 0x29, - f32_load = 0x2A, - f64_load = 0x2B, - i32_load8_s = 0x2C, - i32_load8_u = 0x2D, - i32_load16_s = 0x2E, - i32_load16_u = 0x2F, - i64_load8_s = 0x30, - i64_load8_u = 0x31, - i64_load16_s = 0x32, - i64_load16_u = 0x33, - i64_load32_s = 0x34, - i64_load32_u = 0x35, - i32_store = 0x36, - i64_store = 0x37, - f32_store = 0x38, - f64_store = 0x39, - i32_store8 = 0x3A, - i32_store16 = 0x3B, - i64_store8 = 0x3C, - i64_store16 = 0x3D, - i64_store32 = 0x3E, - memory_size = 0x3F, - memory_grow = 0x40, - i32_const = 0x41, - i64_const = 0x42, - f32_const = 0x43, - f64_const = 0x44, - i32_eqz = 0x45, - i32_eq = 0x46, - i32_ne = 0x47, - i32_lt_s = 0x48, - i32_lt_u = 0x49, - i32_gt_s = 0x4A, - i32_gt_u = 0x4B, - i32_le_s = 0x4C, - i32_le_u = 0x4D, - i32_ge_s = 0x4E, - i32_ge_u = 0x4F, - i64_eqz = 0x50, - i64_eq = 0x51, - i64_ne = 0x52, - i64_lt_s = 0x53, - i64_lt_u = 0x54, - i64_gt_s = 0x55, - i64_gt_u = 0x56, - i64_le_s = 0x57, - i64_le_u = 0x58, - i64_ge_s = 0x59, - i64_ge_u = 0x5A, - f32_eq = 0x5B, - f32_ne = 0x5C, - f32_lt = 0x5D, - f32_gt = 0x5E, - f32_le = 0x5F, - f32_ge = 0x60, - f64_eq = 0x61, - f64_ne = 0x62, - f64_lt = 0x63, - f64_gt = 0x64, - f64_le = 0x65, - f64_ge = 0x66, - i32_clz = 0x67, - i32_ctz = 0x68, - i32_popcnt = 0x69, - i32_add = 0x6A, - i32_sub = 0x6B, - i32_mul = 0x6C, - i32_div_s = 0x6D, - i32_div_u = 0x6E, - i32_rem_s = 0x6F, - i32_rem_u = 0x70, - i32_and = 0x71, - i32_or = 0x72, - i32_xor = 0x73, - i32_shl = 0x74, - i32_shr_s = 0x75, - i32_shr_u = 0x76, - i32_rotl = 0x77, - i32_rotr = 0x78, - i64_clz = 0x79, - i64_ctz = 0x7A, - i64_popcnt = 0x7B, - i64_add = 0x7C, - i64_sub = 0x7D, - i64_mul = 0x7E, - i64_div_s = 0x7F, - i64_div_u = 0x80, - i64_rem_s = 0x81, - i64_rem_u = 0x82, - i64_and = 0x83, - i64_or = 0x84, - i64_xor = 0x85, - i64_shl = 0x86, - i64_shr_s = 0x87, - i64_shr_u = 0x88, - i64_rotl = 0x89, - i64_rotr = 0x8A, - f32_abs = 0x8B, - f32_neg = 0x8C, - f32_ceil = 0x8D, - f32_floor = 0x8E, - f32_trunc = 0x8F, - f32_nearest = 0x90, - f32_sqrt = 0x91, - f32_add = 0x92, - f32_sub = 0x93, - f32_mul = 0x94, - f32_div = 0x95, - f32_min = 0x96, - f32_max = 0x97, - f32_copysign = 0x98, - f64_abs = 0x99, - f64_neg = 0x9A, - f64_ceil = 0x9B, - f64_floor = 0x9C, - f64_trunc = 0x9D, - f64_nearest = 0x9E, - f64_sqrt = 0x9F, - f64_add = 0xA0, - f64_sub = 0xA1, - f64_mul = 0xA2, - f64_div = 0xA3, - f64_min = 0xA4, - f64_max = 0xA5, - f64_copysign = 0xA6, - i32_wrap_i64 = 0xA7, - i32_trunc_s_f32 = 0xA8, - i32_trunc_u_f32 = 0xA9, - i32_trunc_s_f64 = 0xAA, - i32_trunc_u_f64 = 0xAB, - i64_extend_s_i32 = 0xAC, - i64_extend_u_i32 = 0xAD, - i64_trunc_s_f32 = 0xAE, - i64_trunc_u_f32 = 0xAF, - i64_trunc_s_f64 = 0xB0, - i64_trunc_u_f64 = 0xB1, - f32_convert_s_i32 = 0xB2, - f32_convert_u_i32 = 0xB3, - f32_convert_s_i64 = 0xB4, - f32_convert_u_i64 = 0xB5, - f32_demote_f64 = 0xB6, - f64_convert_s_i32 = 0xB7, - f64_convert_u_i32 = 0xB8, - f64_convert_s_i64 = 0xB9, - f64_convert_u_i64 = 0xBA, - f64_promote_f32 = 0xBB, - i32_reinterpret_f32 = 0xBC, - i64_reinterpret_f64 = 0xBD, - f32_reinterpret_i32 = 0xBE, - f64_reinterpret_i64 = 0xBF -} - -enum ReaderState { - HEADER -} - -/** WebAssembly binary reader. */ -export class Reader { // TODO - - /** Buffer being read. */ - private buffer: Uint8Array; - /** Current read offset. */ - private offset: u32; - /** Total length. */ - private length: u32; - /** Current state. */ - private state: ReaderState; - - /** Constructs a new binary reader. */ - constructor(totalLength: u32, initialChunk: Uint8Array) { - this.buffer = initialChunk; - this.offset = 0; - this.length = totalLength; - this.state = ReaderState.HEADER; - } - - /** Provides a chunk of data. */ - next(chunk: Uint8Array): void { - if (!chunk.length) return; - // var current = this.buffer; - // var offset = this.offset; - // var buffer = new Uint8Array((current.length - offset) + chunk.length); - // buffer.set(current.subarray(offset), 0); - // buffer.set(chunk, (current.length - offset)); - // this.buffer = buffer; - // this.length -= this.offset; - // this.offset = 0; - unreachable(); - } - - finish(): void { - unreachable(); - } -} diff --git a/src/decompiler.ts b/src/decompiler.ts deleted file mode 100644 index 9e9d48a76a..0000000000 --- a/src/decompiler.ts +++ /dev/null @@ -1,899 +0,0 @@ -/** - * A decompiler that generates low-level AssemblyScript from WebAssembly binaries. - * @module decompiler - *//***/ - -import { - Module, - NativeType, - ExpressionId, - UnaryOp, - BinaryOp, - HostOp, - FunctionRef, - ExpressionRef, - Index, - getFunctionName, - getFunctionBody, - getFunctionParams, - getFunctionResults, - getExpressionId, - getExpressionType, - getBlockName, - getBlockChildCount, - getBlockChild, - getIfCondition, - getIfTrue, - getIfFalse, - getLoopName, - getLoopBody, - getBreakName, - getBreakCondition, - getLocalGetIndex, - getLocalSetIndex, - getLocalSetValue, - getLoadOffset, - getLoadPtr, - getStoreOffset, - getStorePtr, - getStoreValue, - getConstValueI32, - getConstValueI64Low, - getConstValueI64High, - getConstValueF32, - getConstValueF64, - getUnaryOp, - getUnaryValue, - getBinaryOp, - getBinaryLeft, - getBinaryRight, - getSelectThen, - getSelectElse, - getSelectCondition, - getDropValue, - getReturnValue, - getHostOp, - getHostOperand, - expandType -} from "./module"; - -// TODO :-) - -export class Decompiler { - - static decompile(module: Module): string { - var decompiler = new Decompiler(); - decompiler.decompile(module); - return decompiler.finish(); - } - - text: string[] = []; - functionId: i32 = 0; - - constructor() { } - - /** Decompiles a module to an AST that can then be serialized. */ - decompile(module: Module): void { - throw new Error("not implemented"); - } - - decompileFunction(func: FunctionRef): void { - var name = getFunctionName(func) || "$" + this.functionId.toString(10); - var body = getFunctionBody(func); - this.push("function "); - this.push(name); - this.push("("); - var params = expandType(getFunctionParams(func)); - for (let i = 0, k = params.length; i < k; ++i) { - if (i > 0) this.push(", "); - this.push("$"); - this.push(i.toString(10)); - this.push(": "); - this.push(nativeTypeToType(params[i])); - } - this.push("): "); - var results = expandType(getFunctionResults(func)); - switch (results.length) { - case 0: { - this.push("void"); - break; - } - default: assert(false); // TODO: multi-value - case 1: { - this.push(nativeTypeToType(results[0])); - break; - } - } - this.push(" "); - if (getExpressionId(body) != ExpressionId.Block) { - this.push("{\n"); - } - this.decompileExpression(body); - if (getExpressionId(body) != ExpressionId.Block) { - this.push("\n}\n"); - } - ++this.functionId; - } - - decompileExpression(expr: ExpressionRef): void { - var id = getExpressionId(expr); - var type = getExpressionType(expr); - - var nested: ExpressionRef; - var string: string | null; - var i: Index, k: Index; - - switch (id) { - case ExpressionId.Block: { // TODO: magic - if ((string = getBlockName(expr)) != null) { - this.push(string); - this.push(": "); - } - this.push("{\n"); - k = getBlockChildCount(expr); - for (i = 0; i < k; ++i) { - this.decompileExpression(getBlockChild(expr, i)); - } - this.push("}\n"); - return; - } - case ExpressionId.If: { - if (type == NativeType.None) { - this.push("if ("); - this.decompileExpression(getIfCondition(expr)); - this.push(") "); - this.decompileExpression(getIfTrue(expr)); - if (nested = getIfFalse(expr)) { - this.push(" else "); - this.decompileExpression(nested); - } - } else { - this.decompileExpression(getIfCondition(expr)); - this.push(" ? "); - this.decompileExpression(getIfTrue(expr)); - this.push(" : "); - this.decompileExpression(getIfFalse(expr)); - } - return; - } - case ExpressionId.Loop: { - if ((string = getLoopName(expr)) != null) { - this.push(string); - this.push(": "); - } - this.push("do "); - this.decompileExpression(getLoopBody(expr)); - this.push("while (0);\n"); - } - case ExpressionId.Break: { - if (nested = getBreakCondition(expr)) { - this.push("if ("); - this.decompileExpression(nested); - this.push(") "); - } - if ((string = getBreakName(expr)) != null) { - this.push("break "); - this.push(string); - this.push(";\n"); - } else { - this.push("break;\n"); - } - return; - } - case ExpressionId.Switch: - case ExpressionId.Call: - case ExpressionId.CallIndirect: { - throw new Error("not implemented"); - } - case ExpressionId.LocalGet: { - this.push("$"); - this.push(getLocalGetIndex(expr).toString(10)); - return; - } - case ExpressionId.LocalSet: { - this.push("$"); - this.push(getLocalSetIndex(expr).toString(10)); - this.push(" = "); - this.decompileExpression(getLocalSetValue(expr)); - return; - } - case ExpressionId.GlobalGet: - case ExpressionId.GlobalSet: { - throw new Error("not implemented"); - } - case ExpressionId.Load: { - this.push("load<"); - this.push(nativeTypeToType(type)); - this.push(">("); - this.push(getLoadOffset(expr).toString(10)); - this.push(" + "); - this.decompileExpression(getLoadPtr(expr)); - this.push(")"); - return; - } - case ExpressionId.Store: { - this.push("store<"); - this.push(nativeTypeToType(type)); - this.push(">("); - this.push(getStoreOffset(expr).toString(10)); - this.push(" + "); - this.decompileExpression(getStorePtr(expr)); - this.push(", "); - this.decompileExpression(getStoreValue(expr)); - this.push(")"); - return; - } - case ExpressionId.Const: { - switch (type) { - case NativeType.I32: { - this.push(getConstValueI32(expr).toString(10)); - return; - } - case NativeType.I64: { - this.push( - i64_to_string( - i64_new( - getConstValueI64Low(expr), - getConstValueI64High(expr) - ) - ) - ); - return; - } - case NativeType.F32: { - this.push(getConstValueF32(expr).toString(10)); - return; - } - case NativeType.F64: { - this.push(getConstValueF64(expr).toString(10)); - return; - } - } - break; - } - case ExpressionId.Unary: { - switch (getUnaryOp(expr)) { - case UnaryOp.ClzI32: { - this.push("clz("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.CtzI32: { - this.push("ctz("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.PopcntI32: { - this.push("popcnt("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.NegF32: - case UnaryOp.NegF64: { - this.push("-"); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.AbsF32: { - this.push("abs("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.CeilF32: { - this.push("ceil("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.FloorF32: { - this.push("floor("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.TruncF32: { - this.push("trunc("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.NearestF32: { - this.push("nearest("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.SqrtF32: { - this.push("sqrt("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.EqzI32: - case UnaryOp.EqzI64: { - this.push("!"); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ClzI64: { - this.push("clz("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.CtzI64: { - this.push("ctz("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.PopcntI64: { - this.push("popcnt("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.AbsF64: { - this.push("abs("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.CeilF64: { - this.push("ceil("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.FloorF64: { - this.push("floor("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.TruncF64: { - this.push("trunc("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.NearestF64: { - this.push("nearest("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.SqrtF64: { - this.push("sqrt("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.ExtendI32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ExtendU32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.WrapI64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF32ToI32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF32ToI64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF32ToU32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF32ToU64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF64ToI32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF64ToI64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF64ToU32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.TruncF64ToU64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ReinterpretF32: { - this.push("reinterpret("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.ReinterpretF64: { - this.push("reinterpret("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.ConvertI32ToF32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertI32ToF64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertU32ToF32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertU32ToF64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertI64ToF32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertI64ToF64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertU64ToF32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ConvertU64ToF64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.PromoteF32: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.DemoteF64: { - this.push(""); - this.decompileExpression(getUnaryValue(expr)); - return; - } - case UnaryOp.ReinterpretI32: { - this.push("reinterpret("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - case UnaryOp.ReinterpretI64: { - this.push("reinterpret("); - this.decompileExpression(getUnaryValue(expr)); - this.push(")"); - return; - } - } - break; - } - case ExpressionId.Binary: { // TODO: precedence - switch (getBinaryOp(expr)) { - case BinaryOp.AddI32: - case BinaryOp.AddI64: - case BinaryOp.AddF32: - case BinaryOp.AddF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" + "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.SubI32: - case BinaryOp.SubI64: - case BinaryOp.SubF32: - case BinaryOp.SubF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" - "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.MulI32: - case BinaryOp.MulI64: - case BinaryOp.MulF32: - case BinaryOp.MulF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" * "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.DivI32: - case BinaryOp.DivI64: - case BinaryOp.DivF32: - case BinaryOp.DivF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" / "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.DivU32: { - this.push("("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" / "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.RemI32: - case BinaryOp.RemI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" % "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.RemU32: { - this.push("("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" / "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.AndI32: - case BinaryOp.AndI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" & "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.OrI32: - case BinaryOp.OrI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" | "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.XorI32: - case BinaryOp.XorI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" ^ "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.ShlI32: - case BinaryOp.ShlI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" << "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.ShrU32: - case BinaryOp.ShrU64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" >>> "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.ShrI32: - case BinaryOp.ShrI64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" >> "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.RotlI32: { - this.push("rotl("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.RotrI32: { - this.push("rotr("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.EqI32: - case BinaryOp.EqI64: - case BinaryOp.EqF32: - case BinaryOp.EqF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" == "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.NeI32: - case BinaryOp.NeI64: - case BinaryOp.NeF32: - case BinaryOp.NeF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" != "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.LtI32: - case BinaryOp.LtI64: - case BinaryOp.LtF32: - case BinaryOp.LtF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" < "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.LtU32: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" < "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.LeI32: - case BinaryOp.LeI64: - case BinaryOp.LeF32: - case BinaryOp.LeF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" <= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.LeU32: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" <= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GtI32: - case BinaryOp.GtI64: - case BinaryOp.GtF32: - case BinaryOp.GtF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" > "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GtU32: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" > "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GeI32: - case BinaryOp.GeI64: - case BinaryOp.GeF32: - case BinaryOp.GeF64: { - this.decompileExpression(getBinaryLeft(expr)); - this.push(" >= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GeU32: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" >= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.DivU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" / "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.RemU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" % "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.RotlI64: { - this.push("rotl("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.RotrI64: { - this.push("rotr("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.LtU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" < "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.LeU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" <= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GtU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" > "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.GeU64: { - this.push(""); - this.decompileExpression(getBinaryLeft(expr)); - this.push(" >= "); - this.decompileExpression(getBinaryRight(expr)); - return; - } - case BinaryOp.CopysignF32: { - this.push("copysign("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.MinF32: { - this.push("min("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.MaxF32: { - this.push("max("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.CopysignF64: { - this.push("copysign("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.MinF64: { - this.push("min("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - case BinaryOp.MaxF64: { - this.push("max("); - this.decompileExpression(getBinaryLeft(expr)); - this.push(", "); - this.decompileExpression(getBinaryRight(expr)); - this.push(")"); - return; - } - } - return; - } - case ExpressionId.Select: { - this.push("select<"); - this.push(nativeTypeToType(type)); - this.push(">("); - this.decompileExpression(getSelectThen(expr)); - this.push(", "); - this.decompileExpression(getSelectElse(expr)); - this.push(", "); - this.decompileExpression(getSelectCondition(expr)); - this.push(")"); - return; - } - case ExpressionId.Drop: { - this.decompileExpression(getDropValue(expr)); - this.push(";\n"); - return; - } - case ExpressionId.Return: { - if (nested = getReturnValue(expr)) { - this.push("return "); - this.decompileExpression(nested); - this.push(";\n"); - } else { - this.push("return;\n"); - } - return; - } - case ExpressionId.Host: { - switch (getHostOp(expr)) { - case HostOp.MemorySize: { - this.push("memory.size()"); - return; - } - case HostOp.MemoryGrow: { - this.push("memory.grow("); - this.decompileExpression(getHostOperand(expr, 0)); - this.push(")"); - return; - } - } - break; - } - case ExpressionId.Nop: { - this.push(";\n"); - return; - } - case ExpressionId.Unreachable: { - this.push("unreachable()"); - return; - } - case ExpressionId.AtomicCmpxchg: - case ExpressionId.AtomicRMW: - case ExpressionId.AtomicWait: - case ExpressionId.AtomicNotify: - } - throw new Error("not implemented"); - } - - private push(text: string): void { - // mostly here so we can add debugging if necessary - this.text.push(text); - } - - finish(): string { - var ret = this.text.join(""); - this.text = []; - return ret; - } -} - -function nativeTypeToType(type: NativeType): string { - switch (type) { - case NativeType.None: return "void"; - case NativeType.I32: return "i32"; - case NativeType.I64: return "i64"; - case NativeType.F32: return "f32"; - case NativeType.F64: return "f64"; - case NativeType.V128: return "v128"; - case NativeType.Unreachable: throw new Error("unreachable type"); - default: throw new Error("unexpected type"); - } -} diff --git a/src/index.ts b/src/index.ts index 436193a6a7..5cd8a1edd5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,6 @@ import { Target, Feature } from "./common"; import { Compiler, Options } from "./compiler"; -import { Decompiler } from "./decompiler"; import { IDLBuilder, TSDBuilder } from "./definitions"; import { DiagnosticMessage, DiagnosticCategory, formatDiagnosticMessage } from "./diagnostics"; import { Module } from "./module"; @@ -181,13 +180,6 @@ export function compile(program: Program): Module { return new Compiler(program).compile(); } -/** Decompiles a module to its (low level) source. */ -export function decompile(module: Module): string { - var decompiler = new Decompiler(); - decompiler.decompile(module); - return decompiler.finish(); -} - /** Builds WebIDL definitions for the specified program. */ export function buildIDL(program: Program): string { return IDLBuilder.build(program); @@ -229,10 +221,8 @@ export { LIBRARY_PREFIX } from "./common"; // Full API export * from "./ast"; -// export * from "./binary"; export * from "./common"; export * from "./compiler"; -export * from "./decompiler"; export * from "./definitions"; export * from "./diagnosticMessages.generated"; export * from "./diagnostics"; From fe7299a162a9fd0c9be1bf2c05d2bc8c1938f9d0 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 14:00:36 +0100 Subject: [PATCH 16/19] minor --- src/compiler.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 33852b8cae..3a75443c21 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -814,10 +814,13 @@ export class Compiler extends DiagnosticEmitter { if (typeNode) { let resolvedType = this.resolver.resolveType(typeNode, global.parent); // reports if (!resolvedType) return false; - assert( - resolvedType != Type.void && - resolvedType != Type.auto - ); + if (resolvedType == Type.void) { + this.error( + DiagnosticCode.Type_expected, + typeNode.range + ); + return false; + } global.setType(resolvedType); // Otherwise infer type from initializer @@ -1348,8 +1351,6 @@ export class Compiler extends DiagnosticEmitter { } break; } - case ElementKind.PROPERTY: { - } } } } From c69de2fbc99b2f11e6ecaa5e66ca9bcc2add81e9 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 15:23:43 +0100 Subject: [PATCH 17/19] fix typos --- lib/loader/README.md | 2 +- lib/loader/index.d.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/loader/README.md b/lib/loader/README.md index 1bcb6d91ff..81c622af26 100644 --- a/lib/loader/README.md +++ b/lib/loader/README.md @@ -68,7 +68,7 @@ Besides demangling classes exported from your entry file to a handy object struc **__getUint8ClampedArray**(ptr: `number`): `Uint8ClampedArray`
**__getInt16Array**(ptr: `number`): `Int16Array`
**__getUint16Array**(ptr: `number`): `Uint16Array`
- **__getInt32Arraw**(ptr: `number`): `Int32Array`
+ **__getInt32Array**(ptr: `number`): `Int32Array`
**__getUint32Array**(ptr: `number`): `Uint32Array`
**__getInt64Array**(ptr: `number`): `BigInt64Array`
**__getUint64Array**(ptr: `number`): `BigUint64Array`
diff --git a/lib/loader/index.d.ts b/lib/loader/index.d.ts index 1c208616ce..e494b13a28 100644 --- a/lib/loader/index.d.ts +++ b/lib/loader/index.d.ts @@ -33,7 +33,7 @@ interface ASUtil { __getInt8Array(ptr: number): Int8Array; /** Copies an Uint8Array's values from the module's memory. */ __getUint8Array(ptr: number): Uint8Array; - /** Copies an Uint8Array's values from the module's memory. */ + /** Copies an Uint8ClampedArray's values from the module's memory. */ __getUint8ClampedArray(ptr: number): Uint8ClampedArray; /** Copies an Int16Array's values from the module's memory. */ __getInt16Array(ptr: number): Int16Array; @@ -56,9 +56,9 @@ interface ASUtil { __getArrayView(ptr: number): ArrayBufferView; /** Gets a live view on an Int8Array's values in the module's memory. */ __getInt8ArrayView(ptr: number): Int8Array; - /** Gets a live view on an Uint8Array'S values in the module's memory. */ - __getUint8ArrayView(ptr: number): Uint8Array; /** Gets a live view on an Uint8Array's values in the module's memory. */ + __getUint8ArrayView(ptr: number): Uint8Array; + /** Gets a live view on an Uint8ClampedArray's values in the module's memory. */ __getUint8ClampedArrayView(ptr: number): Uint8ClampedArray; /** Gets a live view on an Int16Array's values in the module's memory. */ __getInt16ArrayView(ptr: number): Int16Array; From 46241a586be555977b00578fb8c9d67636b33229 Mon Sep 17 00:00:00 2001 From: dcode Date: Fri, 10 Jan 2020 18:28:13 +0100 Subject: [PATCH 18/19] guess a type on failing identifier --- src/compiler.ts | 6 +++++- tests/compiler/closure.json | 2 ++ tests/compiler/closure.ts | 20 ++++++++++++++++++-- 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 3a75443c21..00b439b1cc 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -7425,7 +7425,11 @@ export class Compiler extends DiagnosticEmitter { flow, this.currentParent || actualFunction ); - if (!target) return module.unreachable(); + if (!target) { + // make a guess to avoid assertions in calling code + if (this.currentType == Type.void) this.currentType = Type.i32; + return module.unreachable(); + } switch (target.kind) { case ElementKind.LOCAL: { diff --git a/tests/compiler/closure.json b/tests/compiler/closure.json index 5f6d7ed637..9e86903886 100644 --- a/tests/compiler/closure.json +++ b/tests/compiler/closure.json @@ -4,6 +4,8 @@ ], "stderr": [ "AS100: Not implemented.", + "AS100: Not implemented.", + "Cannot find name '$local0'.", "EOF" ] } \ No newline at end of file diff --git a/tests/compiler/closure.ts b/tests/compiler/closure.ts index e5fee482f5..cd1bca4d89 100644 --- a/tests/compiler/closure.ts +++ b/tests/compiler/closure.ts @@ -1,8 +1,24 @@ -function test($local0: i32, $local1: i32): (value: i32) => i32 { +function testParam($local0: i32, $local1: i32): (value: i32) => i32 { return function inner(value: i32) { return $local1; // closure }; } +testParam(1, 2); + +function testVar(): (value: i32) => i32 { + var $local0 = 0; + return function inner(value: i32) { + return $local0; // closure + }; +} +testVar(); + +function testLet(): (value: i32) => i32 { + let $local0 = 0; + return function inner(value: i32) { + return $local0; // closure + }; +} +testLet(); -test(1, 2); ERROR("EOF"); From 57f0e853016797428a4eb0f41fbb11bbb7746b5d Mon Sep 17 00:00:00 2001 From: dcode Date: Sat, 11 Jan 2020 12:25:11 +0100 Subject: [PATCH 19/19] edge case testing --- src/compiler.ts | 49 +- src/flow.ts | 49 +- tests/compiler/do.json | 4 +- tests/compiler/do.optimized.wat | 2349 +++++++++++++++- tests/compiler/do.ts | 186 +- tests/compiler/do.untouched.wat | 4051 ++++++++++++++++++++++++++- tests/compiler/for.json | 4 +- tests/compiler/for.optimized.wat | 2397 +++++++++++++++- tests/compiler/for.ts | 168 +- tests/compiler/for.untouched.wat | 4150 +++++++++++++++++++++++++++- tests/compiler/while.json | 4 +- tests/compiler/while.optimized.wat | 2361 +++++++++++++++- tests/compiler/while.ts | 200 +- tests/compiler/while.untouched.wat | 4079 ++++++++++++++++++++++++++- 14 files changed, 19531 insertions(+), 520 deletions(-) diff --git a/src/compiler.ts b/src/compiler.ts index 00b439b1cc..2c68a86340 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -1780,7 +1780,7 @@ export class Compiler extends DiagnosticEmitter { var stmts = this.compileStatements(statements); if (!innerFlow.isAny(FlowFlags.TERMINATES | FlowFlags.BREAKS)) this.performAutoreleases(innerFlow, stmts); innerFlow.freeScopedLocals(); - outerFlow.inherit(innerFlow); // TODO: only if not terminated? + outerFlow.inherit(innerFlow); this.currentFlow = outerFlow; return this.module.flatten(stmts); } @@ -1881,7 +1881,7 @@ export class Compiler extends DiagnosticEmitter { // ) ┌─┘ var label = outerFlow.pushBreakLabel(); - var flow = outerFlow.fork(); + var flow = outerFlow.fork(/* resetBreakContext */ true); if (flowAfter) flow.unifyLocalFlags(flowAfter); var flowBefore = flow.fork(); this.currentFlow = flow; @@ -1959,15 +1959,6 @@ export class Compiler extends DiagnosticEmitter { // Finalize assert(!flow.hasScopedLocals); - if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { - flow.unset(FlowFlags.TERMINATES); - } - flow.unset( - FlowFlags.BREAKS | - FlowFlags.CONDITIONALLY_BREAKS | - FlowFlags.CONTINUES | - FlowFlags.CONDITIONALLY_CONTINUES - ); outerFlow.inherit(flow); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; @@ -1976,7 +1967,7 @@ export class Compiler extends DiagnosticEmitter { module.flatten(bodyStmts) ) ]); - if (flow.is(FlowFlags.TERMINATES)) { + if (outerFlow.is(FlowFlags.TERMINATES)) { expr = module.block(null, [ expr, module.unreachable() ]); } return expr; @@ -2031,7 +2022,7 @@ export class Compiler extends DiagnosticEmitter { var label = outerFlow.pushBreakLabel(); var stmts = new Array(); - var flow = outerFlow.fork(); + var flow = outerFlow.fork(/* resetBreakContext */ true); this.currentFlow = flow; var breakLabel = "for-break" + label; @@ -2179,23 +2170,14 @@ export class Compiler extends DiagnosticEmitter { this.currentFlow = flow; // Finalize - if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { - flow.unset(FlowFlags.TERMINATES); - } - if (flow.is(FlowFlags.TERMINATES)) { + flow.freeScopedLocals(); + outerFlow.inherit(flow); + outerFlow.popBreakLabel(); + if (outerFlow.is(FlowFlags.TERMINATES)) { stmts.push(module.unreachable()); } else { this.performAutoreleases(flow, stmts); } - flow.freeScopedLocals(); - flow.unset( - FlowFlags.BREAKS | - FlowFlags.CONDITIONALLY_BREAKS | - FlowFlags.CONTINUES | - FlowFlags.CONDITIONALLY_CONTINUES - ); - outerFlow.inherit(flow); - outerFlow.popBreakLabel(); this.currentFlow = outerFlow; return module.flatten(stmts); } @@ -2782,7 +2764,7 @@ export class Compiler extends DiagnosticEmitter { var label = outerFlow.pushBreakLabel(); var stmts = new Array(); - var flow = outerFlow.fork(); + var flow = outerFlow.fork(/* resetBreakContext */ true); if (flowAfter) flow.unifyLocalFlags(flowAfter); var flowBefore = flow.fork(); this.currentFlow = flow; @@ -2880,15 +2862,6 @@ export class Compiler extends DiagnosticEmitter { // Finalize assert(!flow.hasScopedLocals); - if (flow.isAny(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { - flow.unset(FlowFlags.TERMINATES); - } - flow.unset( - FlowFlags.BREAKS | - FlowFlags.CONDITIONALLY_BREAKS | - FlowFlags.CONTINUES | - FlowFlags.CONDITIONALLY_CONTINUES - ); outerFlow.inherit(flow); outerFlow.popBreakLabel(); this.currentFlow = outerFlow; @@ -2897,7 +2870,7 @@ export class Compiler extends DiagnosticEmitter { module.flatten(stmts) ) ]); - if (condKind == ConditionKind.TRUE && flow.is(FlowFlags.TERMINATES)) { + if (condKind == ConditionKind.TRUE && outerFlow.is(FlowFlags.TERMINATES)) { expr = module.block(null, [ expr, module.unreachable() ]); } return expr; @@ -9467,7 +9440,7 @@ var mangleImportName_elementName: string; /** Evaluates the kind of a boolean condition from its expression. */ function evaluateConditionKind(expr: ExpressionRef): ConditionKind { - assert(getExpressionType(expr) == NativeType.I32); + assert(getExpressionType(expr) == NativeType.I32 || getExpressionType(expr) == NativeType.Unreachable); if (getExpressionId(expr) == ExpressionId.Const) { return getConstValueI32(expr) ? ConditionKind.TRUE diff --git a/src/flow.ts b/src/flow.ts index 4f21171017..061c1aacca 100644 --- a/src/flow.ts +++ b/src/flow.ts @@ -241,13 +241,22 @@ export class Flow { unset(flag: FlowFlags): void { this.flags &= ~flag; } /** Forks this flow to a child flow. */ - fork(): Flow { + fork(resetBreakContext: bool = false): Flow { var branch = new Flow(); branch.parent = this; - branch.flags = this.flags; branch.parentFunction = this.parentFunction; - branch.continueLabel = this.continueLabel; - branch.breakLabel = this.breakLabel; + if (resetBreakContext) { + branch.flags = this.flags & ~( + FlowFlags.BREAKS | + FlowFlags.CONDITIONALLY_BREAKS | + FlowFlags.CONTINUES | + FlowFlags.CONDITIONALLY_CONTINUES + ); + } else { + branch.flags = this.flags; + branch.continueLabel = this.continueLabel; + branch.breakLabel = this.breakLabel; + } branch.returnType = this.returnType; branch.contextualTypeArguments = this.contextualTypeArguments; branch.localFlags = this.localFlags.slice(); @@ -500,7 +509,20 @@ export class Flow { inherit(other: Flow): void { assert(other.parentFunction == this.parentFunction); assert(other.parent == this); // currently the case, but might change - this.flags = other.flags; + var otherFlags = other.flags; + + // respective inner flags are irrelevant if contexts differ + if (this.breakLabel != other.breakLabel) { + if (otherFlags & (FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS)) { + otherFlags &= ~FlowFlags.TERMINATES; + } + otherFlags &= ~(FlowFlags.BREAKS | FlowFlags.CONDITIONALLY_BREAKS); + } + if (this.continueLabel != other.continueLabel) { + otherFlags &= ~(FlowFlags.CONTINUES | FlowFlags.CONDITIONALLY_CONTINUES); + } + + this.flags = this.flags | otherFlags; // what happens before is still true this.localFlags = other.localFlags; } @@ -1263,7 +1285,22 @@ export class Flow { parent = parent.parent; ++levels; } - return "Flow(" + this.actualFunction + ")[" + levels.toString() + "]"; + var sb = new Array(); + if (this.is(FlowFlags.RETURNS)) sb.push("RETURNS"); + if (this.is(FlowFlags.RETURNS_WRAPPED)) sb.push("RETURNS_WRAPPED"); + if (this.is(FlowFlags.RETURNS_NONNULL)) sb.push("RETURNS_NONNULL"); + if (this.is(FlowFlags.THROWS)) sb.push("THROWS"); + if (this.is(FlowFlags.BREAKS)) sb.push("BREAKS"); + if (this.is(FlowFlags.CONTINUES)) sb.push("CONTINUES"); + if (this.is(FlowFlags.ALLOCATES)) sb.push("ALLOCATES"); + if (this.is(FlowFlags.CALLS_SUPER)) sb.push("CALLS_SUPER"); + if (this.is(FlowFlags.TERMINATES)) sb.push("TERMINATES"); + if (this.is(FlowFlags.CONDITIONALLY_RETURNS)) sb.push("CONDITIONALLY_RETURNS"); + if (this.is(FlowFlags.CONDITIONALLY_THROWS)) sb.push("CONDITIONALLY_THROWS"); + if (this.is(FlowFlags.CONDITIONALLY_BREAKS)) sb.push("CONDITIONALLY_BREAKS"); + if (this.is(FlowFlags.CONDITIONALLY_CONTINUES)) sb.push("CONDITIONALLY_CONTINUES"); + if (this.is(FlowFlags.CONDITIONALLY_ALLOCATES)) sb.push("CONDITIONALLY_ALLOCATES"); + return "Flow(" + this.actualFunction + ")[" + levels.toString() + "] " + sb.join(" "); } } diff --git a/tests/compiler/do.json b/tests/compiler/do.json index b1da366ff4..59c251c705 100644 --- a/tests/compiler/do.json +++ b/tests/compiler/do.json @@ -1,5 +1,7 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--explicitStart", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/do.optimized.wat b/tests/compiler/do.optimized.wat index bcb288e377..bce1ce0f7d 100644 --- a/tests/compiler/do.optimized.wat +++ b/tests/compiler/do.optimized.wat @@ -1,151 +1,2376 @@ (module + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s") - (global $do/n (mut i32) (i32.const 10)) - (global $do/m (mut i32) (i32.const 0)) - (global $do/o (mut i32) (i32.const 0)) + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (global $do/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:do (; 1 ;) + (func $do/testSimple (; 5 ;) (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 loop $do-continue|0 - global.get $do/n - i32.const 1 - i32.sub - global.set $do/n - global.get $do/m + local.get $1 i32.const 1 i32.add - global.set $do/m - global.get $do/n + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 br_if $do-continue|0 end - global.get $do/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 7 - i32.const 0 + i32.const 10 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/m + local.get $1 i32.const 10 i32.ne if i32.const 0 i32.const 32 - i32.const 8 - i32.const 0 + i32.const 11 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran + ) + (func $do/testEmpty (; 6 ;) + (local $0 i32) + (local $1 i32) i32.const 10 - global.set $do/n - loop $do-continue|1 - global.get $do/n - local.tee $0 + local.set $0 + loop $do-continue|0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - global.set $do/n - local.get $0 - br_if $do-continue|1 + local.set $0 + local.get $1 + br_if $do-continue|0 end - global.get $do/n + local.get $0 i32.const -1 i32.ne if i32.const 0 i32.const 32 - i32.const 12 - i32.const 0 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran + ) + (func $do/testNested (; 7 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) i32.const 10 - global.set $do/n - i32.const 0 - global.set $do/m - loop $do-continue|2 - global.get $do/n + local.set $0 + loop $do-continue|0 + local.get $0 i32.const 1 i32.sub - global.set $do/n - global.get $do/m + local.set $0 + local.get $2 i32.const 1 i32.add - global.set $do/m - loop $do-continue|3 - global.get $do/n - i32.const 1 - i32.sub - global.set $do/n - global.get $do/o + local.set $2 + loop $do-continue|1 + local.get $1 i32.const 1 i32.add - global.set $do/o - global.get $do/n - br_if $do-continue|3 + local.set $1 + local.get $0 + i32.const 1 + i32.sub + local.tee $0 + br_if $do-continue|1 end - global.get $do/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 24 - i32.const 2 + i32.const 39 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $do/o + local.get $1 i32.const 9 i32.ne if i32.const 0 i32.const 32 - i32.const 25 - i32.const 2 + i32.const 40 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $do/n - br_if $do-continue|2 + local.get $0 + br_if $do-continue|0 end - global.get $do/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 27 + i32.const 42 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 9 + i32.ne + if i32.const 0 + i32.const 32 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/m i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrue (; 8 ;) + (local $0 i32) + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-continue|0 + end + local.get $0 + i32.const 10 i32.ne if i32.const 0 i32.const 32 - i32.const 28 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testContinue (; 9 ;) + (local $0 i32) + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $do-continue|0 + end + local.get $0 + i32.const 10 + i32.ne + if i32.const 0 + i32.const 32 + i32.const 107 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/o - i32.const 9 + i32.const 1 + global.set $do/ran + ) + (func $do/testNestedContinue (; 10 ;) + (local $0 i32) + (local $1 i32) + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + if + loop $do-continue|1 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.rem_s + br_if $do-continue|1 + end + br $do-continue|0 + end + end + local.get $0 + i32.const 10 i32.ne if i32.const 0 i32.const 32 - i32.const 29 + i32.const 125 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 90 + i32.ne + if i32.const 0 + i32.const 32 + i32.const 126 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran ) - (func $~start (; 2 ;) - call $start:do + (func $~lib/rt/tlsf/removeBlock (; 11 ;) (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 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 12 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + local.get $3 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $7 + local.get $6 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $2 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + 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 $3 + i32.shl + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 13 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/maybeInitialize (; 14 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $0 + i32.eqz + if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 368 + local.tee $0 + i32.const 0 + i32.store + i32.const 1936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 368 + i32.const 1952 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 368 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 15 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + 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 + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + 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 64 + i32.const 351 + i32.const 17 + 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/pure/markGray (; 17 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 19 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 20 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 21 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 22 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $for-loop|0 + local.get $3 + local.get $0 + i32.lt_u + if + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $5 + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 23 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + i32.const 16 + local.get $0 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + i32.ne + i32.shl + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $1 + local.get $1 + i32.const 536870904 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + call $~lib/rt/rtrace/onalloc + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 26 ;) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 27 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $do/Ref#constructor (; 28 ;) (result i32) + (local $0 i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 29 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 320 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 324 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + if + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 31 ;) (param $0 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 32 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $0 + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $1 + call $~lib/rt/tlsf/__free + end + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 33 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 34 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 35 ;) (param $0 i32) + local.get $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $do/testRef (; 36 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $do/Ref#constructor + local.set $0 + loop $do-continue|0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + else + call $do/Ref#constructor + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + end + local.get $2 + local.tee $0 + br_if $do-continue|0 + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 141 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $do/testRefAutorelease (; 37 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $do/Ref#constructor + local.set $0 + loop $do-continue|0 + block $do-break|0 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + i32.const 0 + local.set $0 + br $do-break|0 + end + call $do/Ref#constructor + local.tee $2 + call $~lib/rt/pure/__release + local.get $2 + br_if $do-continue|0 + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:do (; 38 ;) + i32.const 0 + global.set $do/ran + call $do/testSimple + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testEmpty + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNested + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysTrue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + i32.const 1 + global.set $do/ran + i32.const 0 + global.set $do/ran + i32.const 1 + global.set $do/ran + i32.const 0 + global.set $do/ran + i32.const 1 + global.set $do/ran + i32.const 0 + global.set $do/ran + call $do/testContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNestedContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 131 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRef + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 147 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRefAutorelease + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 167 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 39 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:do + ) + (func $~lib/rt/pure/__visit (; 40 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 356 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + end + local.get $0 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_members (; 41 ;) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) ) diff --git a/tests/compiler/do.ts b/tests/compiler/do.ts index 38091a7e92..82cdbc8f4e 100644 --- a/tests/compiler/do.ts +++ b/tests/compiler/do.ts @@ -1,29 +1,167 @@ -var n = 10; -var m = 0; -do { - n--; - m++; -} while (n); -assert(n == 0); -assert(m == 10); - -n = 10; -do; while(n--); -assert(n == -1); - -n = 10; -m = 0; -var o = 0; -do { - n--; - m++; +var ran: bool; + +function testSimple(): void { + var n = 10; + var m = 0; + do { + n--; + m++; + } while (n); + assert(n == 0); + assert(m == 10); + ran = true; +} +ran = false; +testSimple(); +assert(ran); + +function testEmpty(): void { + var n = 10; + do; while(n--); + assert(n == -1); + ran = true; +} +ran = false; +testEmpty(); +assert(ran); + +function testNested(): void { + var n = 10; + var m = 0; + var o = 0; do { n--; - o++; + m++; + do { + n--; + o++; + } while (n); + assert(n == 0); + assert(o == 9); } while (n); assert(n == 0); + assert(m == 1); assert(o == 9); -} while (n); -assert(n == 0); -assert(m == 1); -assert(o == 9); + ran = true; +} +ran = false; +testNested(); +assert(ran); + +function testAlwaysTrue(): void { + var i = 0; + do { + if (++i == 10) break; + } while (true); + assert(i == 10); + ran = true; +} +ran = false; +testAlwaysTrue(); +assert(ran); + +function testAlwaysFalse(): void { + var i = 0; + do { + ++i; + } while (false); + assert(i == 1); + ran = true; +} +ran = false; +testAlwaysFalse(); +assert(ran); + +function testAlwaysBreaks(): void { + var i = 0; + do { + ++i; + break; + } while (i); + assert(i == 1); + ran = true; +} +ran = false; +testAlwaysBreaks(); +assert(ran); + +function testAlwaysReturns(): void { + var i = 0; + do { + ++i; + ran = true; + return; + } while (i); + assert(false); +} +ran = false; +testAlwaysReturns(); +assert(ran); + +function testContinue(): void { + var i = 0; + do { + if (++i == 10) break; + continue; + } while (i); + assert(i == 10); + ran = true; +} +ran = false; +testContinue(); +assert(ran); + +function testNestedContinue(): void { + var i = 0; + var j = 0; + do { + if (++i == 10) break; + do { + if ((++j % 10) == 0) break; + continue; + } while (j); + continue; + } while (i); + assert(i == 10); + assert(j == 90); + ran = true; +} +ran = false; +testNestedContinue(); +assert(ran); + +class Ref {} +function testRef(): void { + var i = 0; + var ref: Ref | null = new Ref(); + do { + if (++i == 10) ref = null; + else ref = new Ref(); + } while (ref); + assert(i == 10); + assert(!ref); + ran = true; +} +ran = false; +testRef(); +assert(ran); + +function getRef(): Ref { + return new Ref(); +} +function testRefAutorelease(): void { + var i = 0; + var ref: Ref | null = new Ref(); + do { + if (++i == 10) { + ref = null; + break; + } + } while (getRef()); // must not leak + assert(i == 10); + assert(!ref); + ran = true; +} +ran = false; +testRefAutorelease(); +assert(ran); diff --git a/tests/compiler/do.untouched.wat b/tests/compiler/do.untouched.wat index 2173d2a41b..28466b9fdc 100644 --- a/tests/compiler/do.untouched.wat +++ b/tests/compiler/do.untouched.wat @@ -1,175 +1,4104 @@ (module (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\n\00\00\00\01\00\00\00\01\00\00\00\n\00\00\00d\00o\00.\00t\00s\00") + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) - (global $do/n (mut i32) (i32.const 10)) - (global $do/m (mut i32) (i32.const 0)) - (global $do/o (mut i32) (i32.const 0)) + (global $do/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 320)) + (global $~lib/heap/__heap_base i32 (i32.const 356)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:do (; 1 ;) + (func $do/testSimple (; 5 ;) (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 10 + local.set $0 + i32.const 0 + local.set $1 loop $do-continue|0 - global.get $do/n + local.get $0 i32.const 1 i32.sub - global.set $do/n - global.get $do/m + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $do/m - global.get $do/n - local.set $0 + local.set $1 local.get $0 + local.set $2 + local.get $2 br_if $do-continue|0 end - global.get $do/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 7 - i32.const 0 + i32.const 10 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/m + local.get $1 i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 8 - i32.const 0 + i32.const 11 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran + ) + (func $do/testEmpty (; 6 ;) + (local $0 i32) + (local $1 i32) i32.const 10 - global.set $do/n - loop $do-continue|1 + local.set $0 + loop $do-continue|0 nop - global.get $do/n - local.tee $0 + local.get $0 + local.tee $1 i32.const 1 i32.sub - global.set $do/n - local.get $0 local.set $0 - local.get $0 - br_if $do-continue|1 + local.get $1 + local.set $1 + local.get $1 + br_if $do-continue|0 end - global.get $do/n + local.get $0 i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 12 - i32.const 0 + i32.const 21 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran + ) + (func $do/testNested (; 7 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) i32.const 10 - global.set $do/n + local.set $0 + i32.const 0 + local.set $1 i32.const 0 - global.set $do/m - loop $do-continue|2 - global.get $do/n + local.set $2 + loop $do-continue|0 + local.get $0 i32.const 1 i32.sub - global.set $do/n - global.get $do/m + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $do/m - loop $do-continue|3 - global.get $do/n + local.set $1 + loop $do-continue|1 + local.get $0 i32.const 1 i32.sub - global.set $do/n - global.get $do/o + local.set $0 + local.get $2 i32.const 1 i32.add - global.set $do/o - global.get $do/n - local.set $0 + local.set $2 local.get $0 - br_if $do-continue|3 + local.set $3 + local.get $3 + br_if $do-continue|1 end - global.get $do/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 24 - i32.const 2 + i32.const 39 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $do/o + local.get $2 i32.const 9 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 25 - i32.const 2 + i32.const 40 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $do/n - local.set $0 local.get $0 - br_if $do-continue|2 + local.set $3 + local.get $3 + br_if $do-continue|0 end - global.get $do/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 27 + i32.const 42 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 43 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 9 + i32.eq + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 44 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/m i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysTrue (; 8 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $do-break|0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + br $do-break|0 + end + i32.const 1 + local.set $1 + local.get $1 + br_if $do-continue|0 + end + end + local.get $0 + i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 28 + i32.const 56 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysFalse (; 9 ;) + (local $0 i32) + i32.const 0 + local.set $0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + end + local.get $0 + i32.const 1 + i32.eq + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 68 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $do/o - i32.const 9 + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysBreaks (; 10 ;) + (local $0 i32) + i32.const 0 + local.set $0 + block $do-break|0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + br $do-break|0 + end + unreachable + end + local.get $0 + i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 29 + i32.const 81 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $do/testAlwaysReturns (; 11 ;) + (local $0 i32) + i32.const 0 + local.set $0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.set $0 + i32.const 1 + global.set $do/ran + return + end + unreachable + ) + (func $do/testContinue (; 12 ;) + (local $0 i32) + i32.const 0 + local.set $0 + block $do-break|0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + br $do-break|0 + end + br $do-continue|0 + end + unreachable + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 107 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $do/ran ) - (func $~start (; 2 ;) - call $start:do + (func $do/testNestedContinue (; 13 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + i32.const 0 + local.set $1 + block $do-break|0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + br $do-break|0 + end + block $do-break|1 + loop $do-continue|1 + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.rem_s + i32.const 0 + i32.eq + if + br $do-break|1 + end + br $do-continue|1 + end + unreachable + end + br $do-continue|0 + end + unreachable + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 125 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 90 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 126 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + ) + (func $~lib/rt/tlsf/removeBlock (; 14 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz + if + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 15 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + local.set $6 + local.get $6 + i32.load + local.set $3 + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 16 + i32.const 1 + i32.shl + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/maybeInitialize (; 17 ;) (result i32) + (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) + global.get $~lib/rt/tlsf/ROOT + local.set $0 + local.get $0 + i32.eqz + if + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const -16 + i32.and + local.set $1 + memory.size + local.set $2 + local.get $1 + 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 $3 + local.get $3 + local.get $2 + i32.gt_s + if (result i32) + local.get $3 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $1 + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $0 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $0 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $0 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 18 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 351 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/pure/markGray (; 20 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 21 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 22 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 23 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 24 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 25 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $5 + call $~lib/rt/pure/markGray + local.get $1 + local.get $5 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $6 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/freeBlock + else + local.get $5 + local.get $6 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + global.set $~lib/rt/pure/CUR + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + call $~lib/rt/pure/scan + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|2 + end + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 26 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.const 536870904 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 16 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + global.get $~lib/gc/gc.auto + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + else + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 507 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $3 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + call $~lib/rt/rtrace/onalloc + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $2 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 30 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 31 ;) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $do/Ref#constructor (; 32 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 33 ;) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/util/memory/memcpy (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 36 ;) (param $0 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 37 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $0 + call $~lib/rt/tlsf/__free + end + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 38 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 39 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 40 ;) (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $do/testRef (; 41 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $do/Ref#constructor + local.set $1 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $1 + else + i32.const 0 + call $do/Ref#constructor + local.set $3 + local.get $1 + call $~lib/rt/pure/__release + local.get $3 + local.set $1 + end + local.get $1 + local.set $3 + local.get $3 + br_if $do-continue|0 + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 141 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $do/getRef (; 42 ;) (result i32) + i32.const 0 + call $do/Ref#constructor + ) + (func $do/testRefAutorelease (; 43 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $do/Ref#constructor + local.set $1 + block $do-break|0 + loop $do-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $2 + local.get $1 + local.tee $3 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $3 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $1 + br $do-break|0 + end + call $do/getRef + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + br_if $do-continue|0 + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 161 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $do/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $start:do (; 44 ;) + i32.const 0 + global.set $do/ran + call $do/testSimple + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testEmpty + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 26 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNested + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysTrue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysFalse + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 73 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysBreaks + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 86 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testAlwaysReturns + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 99 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 112 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testNestedContinue + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 131 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRef + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 147 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $do/ran + call $do/testRefAutorelease + global.get $do/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 167 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 45 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:do + ) + (func $~lib/rt/pure/__visit (; 46 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + local.get $2 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $2 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const -268435456 + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/rt/__visit_members (; 47 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) ) diff --git a/tests/compiler/for.json b/tests/compiler/for.json index b1da366ff4..59c251c705 100644 --- a/tests/compiler/for.json +++ b/tests/compiler/for.json @@ -1,5 +1,7 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--explicitStart", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/for.optimized.wat b/tests/compiler/for.optimized.wat index c85d6d80d0..1ed8f49fc3 100644 --- a/tests/compiler/for.optimized.wat +++ b/tests/compiler/for.optimized.wat @@ -1,41 +1,65 @@ (module (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s") - (global $for/i (mut i32) (i32.const 0)) + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (global $for/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:for (; 1 ;) + (func $for/testInitExpression (; 5 ;) (local $0 i32) - (local $1 i32) - i32.const 0 - global.set $for/i loop $for-loop|0 - global.get $for/i + local.get $0 i32.const 10 i32.lt_s if - global.get $for/i + local.get $0 i32.const 1 i32.add - global.set $for/i + local.set $0 br $for-loop|0 end end - global.get $for/i + local.get $0 i32.const 10 i32.ne if i32.const 0 i32.const 32 - i32.const 5 - i32.const 0 + i32.const 8 + i32.const 2 call $~lib/builtins/abort unreachable end - loop $for-loop|1 + i32.const 1 + global.set $for/ran + ) + (func $for/testInitStatement (; 6 ;) + (local $0 i32) + loop $for-loop|0 local.get $0 i32.const 10 i32.lt_s @@ -44,53 +68,130 @@ i32.const 1 i32.add local.set $0 - br $for-loop|1 + br $for-loop|0 end end - loop $for-loop|2 - global.get $for/i + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 19 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testEmpty (; 7 ;) + (local $0 i32) + i32.const 10 + local.set $0 + loop $for-loop|0 + local.get $0 i32.const 0 i32.gt_s if - global.get $for/i + local.get $0 i32.const 1 i32.sub - global.set $for/i - br $for-loop|2 + local.set $0 + br $for-loop|0 end end - global.get $for/i + local.get $0 if i32.const 0 i32.const 32 - i32.const 12 - i32.const 0 + i32.const 29 + i32.const 2 call $~lib/builtins/abort unreachable end - loop $for-loop|3 - global.get $for/i + i32.const 1 + global.set $for/ran + ) + (func $for/testConditionOmitted (; 8 ;) + (local $0 i32) + loop $for-loop|0 + local.get $0 i32.const 10 i32.ne if - global.get $for/i + local.get $0 i32.const 1 i32.add - global.set $for/i - br $for-loop|3 + local.set $0 + br $for-loop|0 end end - loop $for-loop|4 - global.get $for/i + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAllOmitted (; 9 ;) + (local $0 i32) + i32.const 10 + local.set $0 + loop $for-loop|0 + local.get $0 i32.const 1 i32.sub - global.set $for/i - global.get $for/i - br_if $for-loop|4 + local.tee $0 + br_if $for-loop|0 end - i32.const 0 - local.set $0 - loop $for-loop|5 + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysTrue (; 10 ;) + (local $0 i32) + loop $for-loop|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $for-loop|0 + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysContinues (; 11 ;) + (local $0 i32) + loop $for-loop|0 local.get $0 i32.const 10 i32.lt_s @@ -99,7 +200,7 @@ i32.const 1 i32.add local.set $0 - br $for-loop|5 + br $for-loop|0 end end local.get $0 @@ -108,47 +209,2225 @@ if i32.const 0 i32.const 32 - i32.const 19 - i32.const 0 + i32.const 80 + i32.const 2 call $~lib/builtins/abort unreachable end - i32.const 0 - local.set $0 - loop $for-loop|6 + i32.const 1 + global.set $for/ran + ) + (func $for/testNestedContinue (; 12 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + loop $for-loop|0 local.get $0 i32.const 10 i32.lt_s if - i32.const 0 - local.set $1 - loop $for-loop|7 - local.get $1 - i32.const 10 - i32.lt_s - if - block $for-continue|7 + local.get $0 + i32.const 2 + i32.ge_s + if + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.add + local.get $2 local.get $0 local.get $1 - i32.eq - br_if $for-continue|7 + i32.lt_s + select + local.set $2 + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $1 - i32.const 1 - i32.add - local.set $1 - br $for-loop|7 end end local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|6 + br $for-loop|0 + end + end + local.get $0 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 28 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $~lib/rt/tlsf/removeBlock (; 13 ;) (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 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end end end ) - (func $~start (; 2 ;) - call $start:for + (func $~lib/rt/tlsf/insertBlock (; 14 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + local.get $3 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $7 + local.get $6 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $2 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + 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 $3 + i32.shl + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 15 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/maybeInitialize (; 16 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $0 + i32.eqz + if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 368 + local.tee $0 + i32.const 0 + i32.store + i32.const 1936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 368 + i32.const 1952 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 368 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 17 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 18 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + 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 + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + 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 64 + i32.const 351 + i32.const 17 + 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/pure/markGray (; 19 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 20 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 21 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 22 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 23 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 24 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $for-loop|0 + local.get $3 + local.get $0 + i32.lt_u + if + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $5 + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 25 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + i32.const 16 + local.get $0 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + i32.ne + i32.shl + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $1 + local.get $1 + i32.const 536870904 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 26 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 27 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + call $~lib/rt/rtrace/onalloc + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 29 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $for/Ref#constructor (; 30 ;) (result i32) + (local $0 i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 31 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 320 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 324 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 32 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + if + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 33 ;) (param $0 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 34 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $0 + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $1 + call $~lib/rt/tlsf/__free + end + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 35 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 36 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 37 ;) (param $0 i32) + local.get $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $for/testRef (; 38 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $for/Ref#constructor + local.set $0 + loop $for-loop|0 + local.get $0 + if + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + else + call $for/Ref#constructor + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $0 + br $for-loop|0 + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $for/testRefAutorelease (; 39 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $for/Ref#constructor + call $for/Ref#constructor + local.set $0 + call $~lib/rt/pure/__release + loop $for-loop|0 + block $for-break0 + call $for/Ref#constructor + local.tee $1 + call $~lib/rt/pure/__release + local.get $1 + if + local.get $2 + i32.const 1 + i32.add + local.tee $2 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $1 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + i32.const 0 + local.set $0 + br $for-break0 + end + call $for/Ref#constructor + local.get $0 + call $~lib/rt/pure/__release + local.set $0 + br $for-loop|0 + end + end + end + local.get $2 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:for (; 40 ;) + i32.const 0 + global.set $for/ran + call $for/testInitExpression + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testInitStatement + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testEmpty + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testConditionOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAllOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysTrue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + i32.const 1 + global.set $for/ran + i32.const 0 + global.set $for/ran + call $for/testAlwaysContinues + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + i32.const 1 + global.set $for/ran + i32.const 0 + global.set $for/ran + i32.const 1 + global.set $for/ran + i32.const 0 + global.set $for/ran + call $for/testNestedContinue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRef + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRefAutorelease + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 41 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:for + ) + (func $~lib/rt/pure/__visit (; 42 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 356 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + end + local.get $0 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_members (; 43 ;) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) ) diff --git a/tests/compiler/for.ts b/tests/compiler/for.ts index 5b2402f0d6..565bbd564f 100644 --- a/tests/compiler/for.ts +++ b/tests/compiler/for.ts @@ -1,25 +1,163 @@ -var i: i32; -for (i = 0; i < 10; ++i) { - ; +var ran: bool; + +function testInitExpression(): void { + var i: i32; + for (i = 0; i < 10; ++i) { + ; + } + assert(i == 10); + ran = true; } -assert(i == 10); +ran = false; +testInitExpression(); +assert(ran); -for (var j: i32 = 0; j < 10; ++j) { - ; +function testInitStatement(): void { + for (var j = 0; j < 10; ++j) { + ; + } + assert(j == 10); + ran = true; } +ran = false; +testInitStatement(); +assert(ran); -for (; i > 0; --i); -assert(i == 0); +function testEmpty(): void { + var i = 10; + for (; i > 0; --i); + assert(i == 0); + ran = true; +} +ran = false; +testEmpty(); +assert(ran); -for (;; ++i) if (i == 10) break; +function testConditionOmitted(): void { + var i = 0; + for (;; ++i) if (i == 10) break; + assert(i == 10); + ran = true; +} +ran = false; +testConditionOmitted(); +assert(ran); -for (;;) if (--i == 0) break; +function testAllOmitted(): void { + var i = 10; + for (;;) if (--i == 0) break; + assert(i == 0); + ran = true; +} +ran = false; +testAllOmitted(); +assert(ran); -for (var k: i32 = 0; k < 10; ++k) continue; -assert(k == 10); +function testAlwaysTrue(): void { + var i = 0; + for (;true;) { + if (++i == 10) break; + } + assert(i == 10); + ran = true; +} +ran = false; +testAlwaysTrue(); +assert(ran); + +function testAlwaysFalse(): void { + for (;false;) { + assert(false); + } + ran = true; +} +ran = false; +testAlwaysFalse(); +assert(ran); + +function testAlwaysContinues(): void { + for (var k = 0; k < 10; ++k) continue; + assert(k == 10); + ran = true; +} +ran = false; +testAlwaysContinues(); +assert(ran); -for (let i = 0; i < 10; i++) { // without continue block - for (let j = 0; j < 10; j++) { // with continue block - if (i === j) continue; +function testAlwaysBreaks(): void { + for (var k = 0; k < 10; ++k) break; + assert(k == 0); + ran = true; +} +ran = false; +testAlwaysBreaks(); +assert(ran); + +function testAlwaysReturns(): void { + for (let k = 0; k < 10; ++k) { + ran = true; + return; + } + assert(false); +} +ran = false; +testAlwaysReturns(); +assert(ran); + +function testNestedContinue(): void { + var i = 0; + var j = 0; + var k = 0; + for (; i < 10; i++) { + if (i < 2) continue; + for (j = 0; j < 10; j++) { + if (i < j) { + ++k; + continue; + } + } + } + assert(i == 10); + assert(j == 10); + assert(k == 28); + ran = true; +} +ran = false; +testNestedContinue(); +assert(ran); + +class Ref {} +function testRef(): void { + var i = 0; + var ref: Ref | null = new Ref(); + for (; ref;) { + if (++i == 10) ref = null; + else ref = new Ref(); + } + assert(i == 10); + assert(!ref); + ran = true; +} +ran = false; +testRef(); +assert(ran); + +function getRef(): Ref { + return new Ref(); +} +function testRefAutorelease(): void { + var i = 0; + var ref: Ref | null = new Ref(); + for (ref = getRef(); getRef(); ref = getRef()) { // must not leak + if (++i == 10) { + ref = null; + break; + } } + assert(i == 10); + assert(!ref); + ran = true; } +ran = false; +testRefAutorelease(); +assert(ran); diff --git a/tests/compiler/for.untouched.wat b/tests/compiler/for.untouched.wat index b0eada0f31..baf9ac0823 100644 --- a/tests/compiler/for.untouched.wat +++ b/tests/compiler/for.untouched.wat @@ -1,204 +1,4182 @@ (module (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\0c\00\00\00\01\00\00\00\01\00\00\00\0c\00\00\00f\00o\00r\00.\00t\00s\00") + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) - (global $for/i (mut i32) (i32.const 0)) + (global $for/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 320)) + (global $~lib/heap/__heap_base i32 (i32.const 356)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:for (; 1 ;) + (func $for/testInitExpression (; 5 ;) (local $0 i32) (local $1 i32) - (local $2 i32) - (local $3 i32) - (local $4 i32) - (local $5 i32) i32.const 0 - global.set $for/i + local.set $0 loop $for-loop|0 - global.get $for/i + local.get $0 i32.const 10 i32.lt_s - local.set $0 - local.get $0 + local.set $1 + local.get $1 if - global.get $for/i + local.get $0 i32.const 1 i32.add - global.set $for/i + local.set $0 br $for-loop|0 end end - global.get $for/i + local.get $0 i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 5 - i32.const 0 + i32.const 8 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $for/ran + ) + (func $for/testInitStatement (; 6 ;) + (local $0 i32) + (local $1 i32) i32.const 0 - local.set $1 - loop $for-loop|1 - local.get $1 + local.set $0 + loop $for-loop|0 + local.get $0 i32.const 10 i32.lt_s - local.set $0 - local.get $0 + local.set $1 + local.get $1 if - local.get $1 + local.get $0 i32.const 1 i32.add - local.set $1 - br $for-loop|1 + local.set $0 + br $for-loop|0 end end - loop $for-loop|2 - global.get $for/i + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if i32.const 0 - i32.gt_s - local.set $0 + i32.const 32 + i32.const 19 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testEmpty (; 7 ;) + (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 + loop $for-loop|0 local.get $0 + i32.const 0 + i32.gt_s + local.set $1 + local.get $1 if nop - global.get $for/i + local.get $0 i32.const 1 i32.sub - global.set $for/i - br $for-loop|2 + local.set $0 + br $for-loop|0 end end - global.get $for/i + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 12 - i32.const 0 + i32.const 29 + i32.const 2 call $~lib/builtins/abort unreachable end - block $for-break3 - loop $for-loop|3 + i32.const 1 + global.set $for/ran + ) + (func $for/testConditionOmitted (; 8 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $for-break0 + loop $for-loop|0 i32.const 1 - local.set $0 - local.get $0 + local.set $1 + local.get $1 if - global.get $for/i + local.get $0 i32.const 10 i32.eq if - br $for-break3 + br $for-break0 end - global.get $for/i + local.get $0 i32.const 1 i32.add - global.set $for/i - br $for-loop|3 + local.set $0 + br $for-loop|0 end end end - block $for-break4 - loop $for-loop|4 + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAllOmitted (; 9 ;) + (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 + block $for-break0 + loop $for-loop|0 i32.const 1 - local.set $0 - local.get $0 + local.set $1 + local.get $1 if - global.get $for/i + local.get $0 i32.const 1 i32.sub - global.set $for/i - global.get $for/i + local.tee $0 i32.const 0 i32.eq if - br $for-break4 + br $for-break0 end - br $for-loop|4 + br $for-loop|0 end end end + local.get $0 i32.const 0 - local.set $2 - loop $for-loop|5 - local.get $2 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 49 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysTrue (; 10 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $for-break0 + loop $for-loop|0 + i32.const 1 + local.set $1 + local.get $1 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + br $for-break0 + end + br $for-loop|0 + end + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 61 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysFalse (; 11 ;) + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysContinues (; 12 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 i32.const 10 i32.lt_s - local.set $0 - local.get $0 + local.set $1 + local.get $1 if - block $for-continue|5 - br $for-continue|5 + block $for-continue|0 + br $for-continue|0 end - local.get $2 + local.get $0 i32.const 1 i32.add - local.set $2 - br $for-loop|5 + local.set $0 + br $for-loop|0 end end - local.get $2 + local.get $0 i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 19 + i32.const 80 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysBreaks (; 13 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $for-break0 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + local.set $1 + local.get $1 + if + br $for-break0 + end + end + end + local.get $0 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 89 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + ) + (func $for/testAlwaysReturns (; 14 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + loop $for-loop|0 + local.get $0 + i32.const 10 + i32.lt_s + local.set $1 + local.get $1 + if + i32.const 1 + global.set $for/ran + return + end + end + i32.const 0 + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 101 + i32.const 2 call $~lib/builtins/abort unreachable end + ) + (func $for/testNestedContinue (; 15 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 0 local.set $0 - loop $for-loop|6 + i32.const 0 + local.set $1 + i32.const 0 + local.set $2 + loop $for-loop|0 local.get $0 i32.const 10 i32.lt_s local.set $3 local.get $3 if - i32.const 0 - local.set $4 - loop $for-loop|7 - local.get $4 - i32.const 10 + block $for-continue|0 + local.get $0 + i32.const 2 i32.lt_s - local.set $5 - local.get $5 if - block $for-continue|7 - local.get $0 - local.get $4 - i32.eq - if - br $for-continue|7 + br $for-continue|0 + end + i32.const 0 + local.set $1 + loop $for-loop|1 + local.get $1 + i32.const 10 + i32.lt_s + local.set $4 + local.get $4 + if + block $for-continue|1 + local.get $0 + local.get $1 + i32.lt_s + if + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-continue|1 + end end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|1 end - local.get $4 - i32.const 1 - i32.add - local.set $4 - br $for-loop|7 end end local.get $0 i32.const 1 i32.add local.set $0 - br $for-loop|6 + br $for-loop|0 end end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 120 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 121 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 28 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 122 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran ) - (func $~start (; 2 ;) - call $start:for + (func $~lib/rt/tlsf/removeBlock (; 16 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz + if + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 17 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + local.set $6 + local.get $6 + i32.load + local.set $3 + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 18 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 16 + i32.const 1 + i32.shl + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/maybeInitialize (; 19 ;) (result i32) + (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) + global.get $~lib/rt/tlsf/ROOT + local.set $0 + local.get $0 + i32.eqz + if + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const -16 + i32.and + local.set $1 + memory.size + local.set $2 + local.get $1 + 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 $3 + local.get $3 + local.get $2 + i32.gt_s + if (result i32) + local.get $3 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $1 + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $0 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $0 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $0 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 20 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 21 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 351 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/pure/markGray (; 22 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 23 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 24 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 25 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 26 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 27 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $5 + call $~lib/rt/pure/markGray + local.get $1 + local.get $5 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $6 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/freeBlock + else + local.get $5 + local.get $6 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + global.set $~lib/rt/pure/CUR + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + call $~lib/rt/pure/scan + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|2 + end + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 28 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.const 536870904 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 16 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 29 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 30 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + global.get $~lib/gc/gc.auto + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + else + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 507 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $3 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + call $~lib/rt/rtrace/onalloc + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 31 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $2 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 32 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 33 ;) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $for/Ref#constructor (; 34 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 35 ;) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/util/memory/memcpy (; 36 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 37 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 38 ;) (param $0 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 39 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $0 + call $~lib/rt/tlsf/__free + end + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 40 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 41 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 42 ;) (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $for/testRef (; 43 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $for/Ref#constructor + local.set $1 + loop $for-loop|0 + local.get $1 + local.set $2 + local.get $2 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $3 + local.get $1 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $3 + local.set $1 + else + i32.const 0 + call $for/Ref#constructor + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + local.set $1 + end + br $for-loop|0 + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 137 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 138 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $for/getRef (; 44 ;) (result i32) + i32.const 0 + call $for/Ref#constructor + ) + (func $for/testRefAutorelease (; 45 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $for/Ref#constructor + local.set $1 + call $for/getRef + local.set $2 + local.get $1 + call $~lib/rt/pure/__release + local.get $2 + local.set $1 + block $for-break0 + loop $for-loop|0 + call $for/getRef + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $2 + local.get $1 + local.tee $4 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $1 + br $for-break0 + end + call $for/getRef + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + local.set $1 + br $for-loop|0 + end + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 157 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 158 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $for/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $start:for (; 46 ;) + i32.const 0 + global.set $for/ran + call $for/testInitExpression + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 13 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testInitStatement + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 24 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testEmpty + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 34 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testConditionOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 44 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAllOmitted + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 54 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysTrue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 66 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysFalse + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysContinues + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 85 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysBreaks + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 94 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testAlwaysReturns + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 105 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testNestedContinue + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRef + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $for/ran + call $for/testRefAutorelease + global.get $for/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 47 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:for + ) + (func $~lib/rt/pure/__visit (; 48 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + local.get $2 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $2 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const -268435456 + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/rt/__visit_members (; 49 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) ) diff --git a/tests/compiler/while.json b/tests/compiler/while.json index b1da366ff4..59c251c705 100644 --- a/tests/compiler/while.json +++ b/tests/compiler/while.json @@ -1,5 +1,7 @@ { "asc_flags": [ - "--runtime none" + "--runtime half", + "--explicitStart", + "--use ASC_RTRACE=1" ] } \ No newline at end of file diff --git a/tests/compiler/while.optimized.wat b/tests/compiler/while.optimized.wat index cb47705e0f..7298eb4246 100644 --- a/tests/compiler/while.optimized.wat +++ b/tests/compiler/while.optimized.wat @@ -1,179 +1,2410 @@ (module + (type $i32_=>_none (func (param i32))) (type $none_=>_none (func)) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s") - (global $while/n (mut i32) (i32.const 10)) - (global $while/m (mut i32) (i32.const 0)) - (global $while/o (mut i32) (i32.const 0)) + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10") + (global $while/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:while (; 1 ;) + (func $while/testSimple (; 5 ;) (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 loop $while-continue|0 - global.get $while/n + local.get $0 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/m + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $while/m + local.set $1 br $while-continue|0 end end - global.get $while/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 8 - i32.const 0 + i32.const 10 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m + local.get $1 i32.const 10 i32.ne if i32.const 0 i32.const 32 - i32.const 9 - i32.const 0 + i32.const 11 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $while/ran + ) + (func $while/testNested (; 6 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) i32.const 10 - global.set $while/n - i32.const 0 - global.set $while/m - loop $while-continue|1 - global.get $while/n + local.set $0 + loop $while-continue|0 + local.get $0 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/m + local.set $0 + local.get $2 i32.const 1 i32.add - global.set $while/m - loop $while-continue|2 - global.get $while/n + local.set $2 + loop $while-continue|1 + local.get $0 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/o + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $while/o - br $while-continue|2 + local.set $1 + br $while-continue|1 end end - global.get $while/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 21 - i32.const 2 + i32.const 29 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $while/o + local.get $1 i32.const 9 i32.ne if i32.const 0 i32.const 32 - i32.const 22 - i32.const 2 + i32.const 30 + i32.const 4 call $~lib/builtins/abort unreachable end - br $while-continue|1 + br $while-continue|0 end end - global.get $while/n + local.get $0 if i32.const 0 i32.const 32 - i32.const 24 - i32.const 0 + i32.const 32 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m + local.get $2 i32.const 1 i32.ne if i32.const 0 i32.const 32 - i32.const 25 - i32.const 0 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/o + local.get $1 i32.const 9 i32.ne if i32.const 0 i32.const 32 - i32.const 26 - i32.const 0 + i32.const 34 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 1 - global.set $while/n - i32.const 0 - global.set $while/m - loop $while-continue|3 - global.get $while/n - local.tee $0 + global.set $while/ran + ) + (func $while/testEmpty (; 7 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 1 + local.set $0 + loop $while-continue|0 + local.get $0 + local.tee $2 i32.const 1 i32.sub - global.set $while/n - local.get $0 + local.set $0 + local.get $2 if (result i32) - global.get $while/m + local.get $1 i32.const 1 i32.add - global.set $while/m - global.get $while/m + local.tee $1 else i32.const 0 end - br_if $while-continue|3 + br_if $while-continue|0 end - global.get $while/n + local.get $0 i32.const -1 i32.ne if i32.const 0 i32.const 32 - i32.const 31 + i32.const 45 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.ne + if i32.const 0 + i32.const 32 + i32.const 46 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysTrue (; 8 ;) + (local $0 i32) + loop $while-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.ne + br_if $while-continue|0 + end + local.get $0 + i32.const 10 i32.ne if i32.const 0 i32.const 32 + i32.const 58 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testContinue (; 9 ;) + (local $0 i32) + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testNestedContinue (; 10 ;) + (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 + i32.const 10 + local.set $1 + loop $while-continue|0 + local.get $0 + if + loop $while-continue|1 + local.get $1 + if + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + local.get $0 + if + i32.const 0 i32.const 32 + i32.const 126 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + if i32.const 0 + i32.const 32 + i32.const 127 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $while/ran ) - (func $~start (; 2 ;) - call $start:while + (func $~lib/rt/tlsf/removeBlock (; 11 ;) (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 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $2 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $3 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $2 + local.get $3 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $2 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=20 + local.set $4 + local.get $1 + i32.load offset=16 + local.tee $5 + if + local.get $5 + local.get $4 + i32.store offset=20 + end + local.get $4 + if + local.get $4 + local.get $5 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.get $2 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + local.get $4 + i32.store offset=96 + local.get $4 + i32.eqz + if + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $2 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.store offset=4 + local.get $1 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $3 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 12 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.tee $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.tee $5 + i32.const 1 + i32.and + if + local.get $3 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const -4 + i32.and + i32.add + local.tee $2 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + local.get $3 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.tee $4 + i32.load + local.set $5 + end + end + local.get $3 + i32.const 2 + i32.and + if + local.get $1 + i32.const 4 + i32.sub + i32.load + local.tee $2 + i32.load + local.tee $6 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $6 + i32.const -4 + i32.and + i32.const 16 + i32.add + local.get $3 + i32.const -4 + i32.and + i32.add + local.tee $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $2 + local.get $7 + local.get $6 + i32.const 3 + i32.and + i32.or + local.tee $3 + i32.store + local.get $2 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $3 + i32.const -4 + i32.and + local.tee $2 + i32.const 16 + i32.ge_u + if (result i32) + local.get $2 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.get $4 + i32.ne + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $2 + i32.const 256 + i32.lt_u + if (result i32) + local.get $2 + i32.const 4 + i32.shr_u + local.set $4 + i32.const 0 + else + local.get $2 + i32.const 31 + local.get $2 + i32.clz + i32.sub + local.tee $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 16 + i32.xor + local.set $4 + local.get $2 + i32.const 7 + i32.sub + end + local.tee $3 + i32.const 23 + i32.lt_u + if (result i32) + local.get $4 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $2 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $2 + i32.store offset=20 + local.get $2 + if + local.get $2 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.get $4 + local.get $3 + i32.const 4 + i32.shl + 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 $3 + i32.shl + i32.or + i32.store + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + local.get $0 + local.get $3 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $4 + i32.shl + i32.or + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 13 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $1 + local.get $2 + i32.le_u + select + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=1568 + local.tee $3 + if + local.get $1 + local.get $3 + i32.const 16 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + local.get $1 + i32.const 16 + i32.sub + i32.eq + if + local.get $3 + i32.load + local.set $4 + local.get $1 + i32.const 16 + i32.sub + local.set $1 + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.tee $2 + i32.const 48 + i32.lt_u + if + return + end + local.get $1 + local.get $4 + i32.const 2 + i32.and + local.get $2 + i32.const 32 + i32.sub + i32.const 1 + i32.or + i32.or + i32.store + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $2 + i32.add + i32.const 16 + i32.sub + local.tee $2 + i32.const 2 + i32.store + local.get $0 + local.get $2 + i32.store offset=1568 + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + ) + (func $~lib/rt/tlsf/maybeInitialize (; 14 ;) (result i32) + (local $0 i32) + (local $1 i32) + (local $2 i32) + global.get $~lib/rt/tlsf/ROOT + local.tee $0 + i32.eqz + if + i32.const 1 + memory.size + local.tee $0 + i32.gt_s + if (result i32) + i32.const 1 + local.get $0 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + i32.const 368 + local.tee $0 + i32.const 0 + i32.store + i32.const 1936 + i32.const 0 + i32.store + loop $for-loop|0 + local.get $1 + i32.const 23 + i32.lt_u + if + local.get $1 + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=4 + i32.const 0 + local.set $2 + loop $for-loop|1 + local.get $2 + i32.const 16 + i32.lt_u + if + local.get $1 + i32.const 4 + i32.shl + local.get $2 + i32.add + i32.const 2 + i32.shl + i32.const 368 + i32.add + i32.const 0 + i32.store offset=96 + local.get $2 + i32.const 1 + i32.add + local.set $2 + br $for-loop|1 + end + end + local.get $1 + i32.const 1 + i32.add + local.set $1 + br $for-loop|0 + end + end + i32.const 368 + i32.const 1952 + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + i32.const 368 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 15 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const -16 + i32.and + local.tee $0 + i32.const 16 + local.get $0 + i32.const 16 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 16 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + local.get $1 + i32.const 256 + i32.lt_u + if (result i32) + local.get $1 + i32.const 4 + i32.shr_u + local.set $1 + i32.const 0 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if + 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 + end + local.tee $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $1 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + 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 64 + i32.const 351 + i32.const 17 + 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/pure/markGray (; 17 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 18 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.tee $2 + i32.const 1 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 19 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 20 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 21 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const -1879048193 + i32.and + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 22 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.tee $5 + local.tee $2 + local.set $3 + global.get $~lib/rt/pure/CUR + local.set $0 + loop $for-loop|0 + local.get $3 + local.get $0 + i32.lt_u + if + local.get $3 + i32.load + local.tee $4 + i32.load offset=4 + local.tee $1 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $4 + call $~lib/rt/pure/markGray + local.get $2 + local.get $4 + i32.store + local.get $2 + i32.const 4 + i32.add + local.set $2 + else + i32.const 0 + local.get $1 + i32.const 268435455 + i32.and + i32.eqz + local.get $1 + i32.const 1879048192 + i32.and + select + if + global.get $~lib/rt/tlsf/ROOT + local.get $4 + call $~lib/rt/tlsf/freeBlock + else + local.get $4 + local.get $1 + i32.const 2147483647 + i32.and + i32.store offset=4 + end + end + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|0 + end + end + local.get $2 + global.set $~lib/rt/pure/CUR + local.get $5 + local.set $0 + loop $for-loop|1 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + call $~lib/rt/pure/scan + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|1 + end + end + local.get $5 + local.set $0 + loop $for-loop|2 + local.get $0 + local.get $2 + i32.lt_u + if + local.get $0 + i32.load + local.tee $1 + local.get $1 + i32.load offset=4 + i32.const 2147483647 + i32.and + i32.store offset=4 + local.get $1 + call $~lib/rt/pure/collectWhite + local.get $0 + i32.const 4 + i32.add + local.set $0 + br $for-loop|2 + end + end + local.get $5 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 23 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + memory.size + local.tee $2 + i32.const 16 + local.get $0 + i32.load offset=1568 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + i32.ne + i32.shl + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.get $1 + local.get $1 + i32.const 536870904 + i32.lt_u + select + i32.add + i32.const 65535 + i32.add + i32.const -65536 + i32.and + i32.const 16 + i32.shr_u + local.tee $1 + local.get $2 + local.get $1 + i32.gt_s + select + memory.grow + i32.const 0 + i32.lt_s + if + local.get $1 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + local.get $0 + local.get $2 + i32.const 16 + i32.shl + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + ) + (func $~lib/rt/tlsf/prepareBlock (; 24 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const -4 + i32.and + local.get $2 + i32.sub + local.tee $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $2 + local.get $1 + i32.const 16 + i32.add + i32.add + local.tee $1 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const -2 + i32.and + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + local.get $1 + i32.const 16 + i32.add + local.get $1 + i32.load + i32.const -4 + i32.and + i32.add + i32.load + i32.const -3 + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 25 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.tee $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + local.get $0 + local.get $3 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $3 + call $~lib/rt/tlsf/searchBlock + local.tee $2 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $2 + i32.load + i32.const -4 + i32.and + local.get $3 + i32.lt_u + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 0 + i32.store offset=4 + local.get $2 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $2 + local.get $3 + call $~lib/rt/tlsf/prepareBlock + local.get $2 + call $~lib/rt/rtrace/onalloc + local.get $2 + ) + (func $~lib/rt/tlsf/__alloc (; 26 ;) (param $0 i32) (param $1 i32) (result i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.tee $0 + local.get $1 + i32.store offset=8 + local.get $0 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 27 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $while/Ref#constructor (; 28 ;) (result i32) + (local $0 i32) + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 29 ;) (param $0 i32) (result i32) + local.get $0 + i32.const 320 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 3 + i32.shl + i32.const 324 + i32.add + i32.load + ) + (func $~lib/memory/memory.copy (; 30 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $2 + local.set $3 + local.get $0 + local.get $1 + i32.eq + br_if $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.get $1 + i32.lt_u + if + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $0 + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $0 + local.get $1 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + if + local.get $0 + local.tee $2 + i32.const 1 + i32.add + local.set $0 + local.get $1 + local.tee $4 + i32.const 1 + i32.add + local.set $1 + local.get $2 + local.get $4 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $1 + i32.const 7 + i32.and + local.get $0 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $0 + local.get $3 + i32.add + i32.const 7 + i32.and + if + local.get $3 + i32.eqz + br_if $~lib/util/memory/memmove|inlined.0 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + if + local.get $3 + i32.const 8 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + if + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + local.get $0 + i32.add + local.get $1 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 31 ;) (param $0 i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + i32.const 0 + local.get $0 + select + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 32 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/pure/CUR + global.get $~lib/rt/pure/ROOTS + local.tee $1 + i32.sub + local.tee $2 + i32.const 1 + i32.shl + local.tee $0 + i32.const 256 + local.get $0 + i32.const 256 + i32.gt_u + select + local.tee $3 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.tee $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $0 + local.get $1 + local.get $2 + call $~lib/memory/memory.copy + local.get $1 + if + local.get $1 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $1 + call $~lib/rt/tlsf/__free + end + local.get $0 + global.set $~lib/rt/pure/ROOTS + local.get $0 + local.get $2 + i32.add + global.set $~lib/rt/pure/CUR + local.get $0 + local.get $3 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 33 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.tee $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 34 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.tee $2 + i32.const 268435455 + i32.and + local.set $1 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $2 + i32.const -2147483648 + i32.and + if + local.get $0 + i32.const -2147483648 + i32.store offset=4 + else + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + else + local.get $1 + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + if + local.get $0 + local.get $1 + i32.const 1 + i32.sub + local.get $2 + i32.const -268435456 + i32.and + i32.or + i32.store offset=4 + else + local.get $0 + local.get $1 + i32.const 1 + i32.sub + i32.const -1342177280 + i32.or + i32.store offset=4 + local.get $2 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + end + end + ) + (func $~lib/rt/pure/__release (; 35 ;) (param $0 i32) + local.get $0 + i32.const 356 + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $while/testRef (; 36 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $while/Ref#constructor + local.set $0 + loop $while-continue|0 + local.get $0 + if + local.get $1 + i32.const 1 + i32.add + local.tee $1 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $2 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + else + call $while/Ref#constructor + local.set $2 + local.get $0 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $0 + br $while-continue|0 + end + end + local.get $1 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $while/testRefAutorelease (; 37 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + call $while/Ref#constructor + local.set $0 + loop $while-continue|0 + block $while-break|0 + call $while/Ref#constructor + local.tee $1 + call $~lib/rt/pure/__release + local.get $1 + if + local.get $2 + i32.const 1 + i32.add + local.tee $2 + i32.const 10 + i32.eq + if + i32.const 0 + local.set $1 + local.get $0 + if + local.get $0 + call $~lib/rt/pure/__release + end + i32.const 0 + local.set $0 + br $while-break|0 + end + br $while-continue|0 + end + end + end + local.get $2 + i32.const 10 + i32.ne + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + local.get $0 + call $~lib/rt/pure/__release + ) + (func $start:while (; 38 ;) + i32.const 0 + global.set $while/ran + call $while/testSimple + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testNested + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testEmpty + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testAlwaysTrue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + i32.const 1 + global.set $while/ran + i32.const 0 + global.set $while/ran + i32.const 1 + global.set $while/ran + i32.const 0 + global.set $while/ran + i32.const 1 + global.set $while/ran + i32.const 0 + global.set $while/ran + call $while/testContinue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testNestedContinue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 132 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testRef + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 148 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testRefAutorelease + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 168 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 39 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:while + ) + (func $~lib/rt/pure/__visit (; 40 ;) (param $0 i32) (param $1 i32) + local.get $0 + i32.const 356 + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $0 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + local.get $1 + i32.const 1 + i32.ne + if + local.get $1 + i32.const 2 + i32.sub + br_table $case1|0 $case2|0 $case3|0 $case4|0 $case5|0 + end + local.get $0 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $0 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.le_u + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $0 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $0 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $0 + i32.load offset=4 + local.tee $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.ne + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $1 + i32.const 1879048192 + i32.and + if + local.get $0 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $0 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/__visit_members (; 41 ;) (param $0 i32) (param $1 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $0 + if + local.get $0 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) ) diff --git a/tests/compiler/while.ts b/tests/compiler/while.ts index 4f2d3f389c..1a8e98548c 100644 --- a/tests/compiler/while.ts +++ b/tests/compiler/while.ts @@ -1,32 +1,168 @@ -var n = 10; -var m = 0; - -while (n) { - n--; - m++; -} -assert(n == 0); -assert(m == 10); - -n = 10; -m = 0; -var o = 0; -while (n) { - n--; - m++; - while (n) { - n--; - o++; - } - assert(n == 0); - assert(o == 9); -} -assert(n == 0); -assert(m == 1); -assert(o == 9); - -n = 1; -m = 0; -while (n-- && ++m); -assert(n == -1); -assert(m == 1); +var ran: bool; + +function testSimple(): void { + var i = 10; + var j = 0; + while (i) { + i--; + j++; + } + assert(i == 0); + assert(j == 10); + ran = true; +} +ran = false; +testSimple(); +assert(ran); + +function testNested(): void { + var i = 10; + var j = 0; + var k = 0; + while (i) { + i--; + j++; + while (i) { + i--; + k++; + } + assert(i == 0); + assert(k == 9); + } + assert(i == 0); + assert(j == 1); + assert(k == 9); + ran = true; +} +ran = false; +testNested(); +assert(ran); + +function testEmpty(): void { + var i = 1; + var j = 0; + while (i-- && ++j); + assert(i == -1); + assert(j == 1); + ran = true; +} +ran = false; +testEmpty(); +assert(ran); + +function testAlwaysTrue(): void { + var i = 0; + while (true) { + if (++i == 10) break; + } + assert(i == 10); + ran = true; +} +ran = false; +testAlwaysTrue(); +assert(ran); + +function testAlwaysFalse(): void { + var i = 0; + while (false) { + ++i; + assert(false); + } + assert(i == 0); + ran = true; +} +ran = false; +testAlwaysFalse(); +assert(ran); + +function testAlwaysBreaks(): void { + var i = 0; + while (++i) { + break; + } + assert(i == 1); + ran = true; +} +ran = false; +testAlwaysBreaks(); +assert(ran); + +function testAlwaysReturns(): void { + var i = 0; + while (++i) { + ran = true; + return; + } + assert(false); +} +ran = false; +testAlwaysReturns(); +assert(ran); + +function testContinue(): void { + var i = 10; + while (i) { + --i; + continue; + } + assert(i == 0); + ran = true; +} +ran = false; +testContinue(); +assert(ran); + +function testNestedContinue(): void { + var i = 10; + var j = 10; + while (i) { + while (j) { + --j; + continue; + } + --i; + continue; + } + assert(i == 0); + assert(j == 0); + ran = true; +} +ran = false; +testNestedContinue(); +assert(ran); + +class Ref {} +function testRef(): void { + var i = 0; + var ref: Ref | null = new Ref(); + while (ref) { + if (++i == 10) ref = null; + else ref = new Ref(); + } + assert(i == 10); + assert(!ref); + ran = true; +} +ran = false; +testRef(); +assert(ran); + +function getRef(): Ref { + return new Ref(); +} +function testRefAutorelease(): void { + var i = 0; + var ref: Ref | null = new Ref(); + while (getRef()) { // must not leak + if (++i == 10) { + ref = null; + break; + } + } + assert(i == 10); + assert(!ref); + ran = true; +} +ran = false; +testRefAutorelease(); +assert(ran); diff --git a/tests/compiler/while.untouched.wat b/tests/compiler/while.untouched.wat index d64bfb9e59..48d5103b3e 100644 --- a/tests/compiler/while.untouched.wat +++ b/tests/compiler/while.untouched.wat @@ -1,207 +1,4148 @@ (module (type $none_=>_none (func)) + (type $i32_=>_none (func (param i32))) + (type $i32_i32_=>_none (func (param i32 i32))) + (type $i32_=>_i32 (func (param i32) (result i32))) + (type $i32_i32_i32_=>_none (func (param i32 i32 i32))) + (type $i32_i32_=>_i32 (func (param i32 i32) (result i32))) + (type $none_=>_i32 (func (result i32))) (type $i32_i32_i32_i32_=>_none (func (param i32 i32 i32 i32))) + (type $i32_i32_i32_=>_i32 (func (param i32 i32 i32) (result i32))) (import "env" "abort" (func $~lib/builtins/abort (param i32 i32 i32 i32))) + (import "rtrace" "onfree" (func $~lib/rt/rtrace/onfree (param i32))) + (import "rtrace" "onalloc" (func $~lib/rt/rtrace/onalloc (param i32))) + (import "rtrace" "onincrement" (func $~lib/rt/rtrace/onincrement (param i32))) + (import "rtrace" "ondecrement" (func $~lib/rt/rtrace/ondecrement (param i32))) (memory $0 1) (data (i32.const 16) "\10\00\00\00\01\00\00\00\01\00\00\00\10\00\00\00w\00h\00i\00l\00e\00.\00t\00s\00") + (data (i32.const 48) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00t\00l\00s\00f\00.\00t\00s\00") + (data (i32.const 96) "(\00\00\00\01\00\00\00\01\00\00\00(\00\00\00a\00l\00l\00o\00c\00a\00t\00i\00o\00n\00 \00t\00o\00o\00 \00l\00a\00r\00g\00e\00") + (data (i32.const 160) "\1e\00\00\00\01\00\00\00\01\00\00\00\1e\00\00\00~\00l\00i\00b\00/\00r\00t\00/\00p\00u\00r\00e\00.\00t\00s\00") + (data (i32.const 208) "$\00\00\00\01\00\00\00\01\00\00\00$\00\00\00I\00n\00d\00e\00x\00 \00o\00u\00t\00 \00o\00f\00 \00r\00a\00n\00g\00e\00") + (data (i32.const 272) "\14\00\00\00\01\00\00\00\01\00\00\00\14\00\00\00~\00l\00i\00b\00/\00r\00t\00.\00t\00s\00") + (data (i32.const 320) "\04\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00") (table $0 1 funcref) - (global $while/n (mut i32) (i32.const 10)) - (global $while/m (mut i32) (i32.const 0)) - (global $while/o (mut i32) (i32.const 0)) + (global $while/ran (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/ROOT (mut i32) (i32.const 0)) + (global $~lib/rt/tlsf/collectLock (mut i32) (i32.const 0)) + (global $~lib/gc/gc.auto (mut i32) (i32.const 1)) + (global $~lib/rt/pure/ROOTS (mut i32) (i32.const 0)) + (global $~lib/rt/pure/CUR (mut i32) (i32.const 0)) + (global $~lib/rt/pure/END (mut i32) (i32.const 0)) + (global $~lib/ASC_SHRINK_LEVEL i32 (i32.const 0)) + (global $~started (mut i32) (i32.const 0)) + (global $~lib/rt/__rtti_base i32 (i32.const 320)) + (global $~lib/heap/__heap_base i32 (i32.const 356)) + (export "_start" (func $~start)) (export "memory" (memory $0)) - (start $~start) - (func $start:while (; 1 ;) + (func $while/testSimple (; 5 ;) (local $0 i32) (local $1 i32) + (local $2 i32) + i32.const 10 + local.set $0 + i32.const 0 + local.set $1 loop $while-continue|0 - global.get $while/n - local.set $0 local.get $0 + local.set $2 + local.get $2 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/m + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $while/m + local.set $1 br $while-continue|0 end end - global.get $while/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 8 - i32.const 0 + i32.const 10 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m + local.get $1 i32.const 10 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 9 - i32.const 0 + i32.const 11 + i32.const 2 call $~lib/builtins/abort unreachable end + i32.const 1 + global.set $while/ran + ) + (func $while/testNested (; 6 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) i32.const 10 - global.set $while/n + local.set $0 i32.const 0 - global.set $while/m - loop $while-continue|1 - global.get $while/n - local.set $0 + local.set $1 + i32.const 0 + local.set $2 + loop $while-continue|0 local.get $0 + local.set $3 + local.get $3 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/m + local.set $0 + local.get $1 i32.const 1 i32.add - global.set $while/m - loop $while-continue|2 - global.get $while/n - local.set $1 - local.get $1 + local.set $1 + loop $while-continue|1 + local.get $0 + local.set $4 + local.get $4 if - global.get $while/n + local.get $0 i32.const 1 i32.sub - global.set $while/n - global.get $while/o + local.set $0 + local.get $2 i32.const 1 i32.add - global.set $while/o - br $while-continue|2 + local.set $2 + br $while-continue|1 end end - global.get $while/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 21 - i32.const 2 + i32.const 29 + i32.const 4 call $~lib/builtins/abort unreachable end - global.get $while/o + local.get $2 i32.const 9 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 22 - i32.const 2 + i32.const 30 + i32.const 4 call $~lib/builtins/abort unreachable end - br $while-continue|1 + br $while-continue|0 end end - global.get $while/n + local.get $0 i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 24 - i32.const 0 + i32.const 32 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m + local.get $1 i32.const 1 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 25 - i32.const 0 + i32.const 33 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/o + local.get $2 i32.const 9 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 26 - i32.const 0 + i32.const 34 + i32.const 2 call $~lib/builtins/abort unreachable end i32.const 1 - global.set $while/n + global.set $while/ran + ) + (func $while/testEmpty (; 7 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + i32.const 1 + local.set $0 i32.const 0 - global.set $while/m - loop $while-continue|3 - global.get $while/n - local.tee $0 + local.set $1 + loop $while-continue|0 + local.get $0 + local.tee $2 i32.const 1 i32.sub - global.set $while/n - local.get $0 + local.set $0 + local.get $2 if (result i32) - global.get $while/m + local.get $1 i32.const 1 i32.add - global.set $while/m - global.get $while/m + local.tee $1 else i32.const 0 end - local.set $0 - local.get $0 + local.set $2 + local.get $2 if nop - br $while-continue|3 + br $while-continue|0 end end - global.get $while/n + local.get $0 i32.const -1 i32.eq i32.eqz if i32.const 0 i32.const 32 - i32.const 31 + i32.const 45 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 46 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysTrue (; 8 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $while-break|0 + loop $while-continue|0 + i32.const 1 + local.set $1 + local.get $1 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + br $while-break|0 + end + br $while-continue|0 + end + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 58 + i32.const 2 call $~lib/builtins/abort unreachable end - global.get $while/m i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysFalse (; 9 ;) + (local $0 i32) + i32.const 0 + local.set $0 + local.get $0 + i32.const 0 i32.eq i32.eqz if i32.const 0 i32.const 32 + i32.const 71 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysBreaks (; 10 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + block $while-break|0 + loop $while-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.set $1 + local.get $1 + if + br $while-break|0 + end + end + end + local.get $0 + i32.const 1 + i32.eq + i32.eqz + if + i32.const 0 i32.const 32 + i32.const 83 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testAlwaysReturns (; 11 ;) + (local $0 i32) + (local $1 i32) + i32.const 0 + local.set $0 + loop $while-continue|0 + local.get $0 + i32.const 1 + i32.add + local.tee $0 + local.set $1 + local.get $1 + if + i32.const 1 + global.set $while/ran + return + end + end + i32.const 0 + i32.eqz + if i32.const 0 + i32.const 32 + i32.const 96 + i32.const 2 call $~lib/builtins/abort unreachable end ) - (func $~start (; 2 ;) - call $start:while + (func $while/testContinue (; 12 ;) + (local $0 i32) + (local $1 i32) + i32.const 10 + local.set $0 + loop $while-continue|0 + local.get $0 + local.set $1 + local.get $1 + if + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + local.get $0 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 108 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $while/testNestedContinue (; 13 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + i32.const 10 + local.set $0 + i32.const 10 + local.set $1 + loop $while-continue|0 + local.get $0 + local.set $2 + local.get $2 + if + loop $while-continue|1 + local.get $1 + local.set $3 + local.get $3 + if + local.get $1 + i32.const 1 + i32.sub + local.set $1 + br $while-continue|1 + end + end + local.get $0 + i32.const 1 + i32.sub + local.set $0 + br $while-continue|0 + end + end + local.get $0 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 126 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 0 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 127 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + ) + (func $~lib/rt/tlsf/removeBlock (; 14 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 277 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $3 + local.get $3 + i32.const 16 + i32.ge_u + if (result i32) + local.get $3 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 279 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $4 + local.get $3 + i32.const 4 + i32.shr_u + local.set $5 + else + i32.const 31 + local.get $3 + i32.clz + i32.sub + local.set $4 + local.get $3 + local.get $4 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $5 + local.get $4 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $4 + end + local.get $4 + i32.const 23 + i32.lt_u + if (result i32) + local.get $5 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 292 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load offset=16 + local.set $6 + local.get $1 + i32.load offset=20 + local.set $7 + local.get $6 + if + local.get $6 + local.get $7 + i32.store offset=20 + end + local.get $7 + if + local.get $7 + local.get $6 + i32.store offset=16 + end + local.get $1 + local.get $0 + local.set $10 + local.get $4 + local.set $9 + local.get $5 + local.set $8 + local.get $10 + local.get $9 + i32.const 4 + i32.shl + local.get $8 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + i32.eq + if + local.get $0 + local.set $11 + local.get $4 + local.set $10 + local.get $5 + local.set $9 + local.get $7 + local.set $8 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $8 + i32.store offset=96 + local.get $7 + i32.eqz + if + local.get $0 + local.set $9 + local.get $4 + local.set $8 + local.get $9 + local.get $8 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $9 + local.get $0 + local.set $8 + local.get $4 + local.set $11 + local.get $9 + i32.const 1 + local.get $5 + i32.shl + i32.const -1 + i32.xor + i32.and + local.tee $9 + local.set $10 + local.get $8 + local.get $11 + i32.const 2 + i32.shl + i32.add + local.get $10 + i32.store offset=4 + local.get $9 + i32.eqz + if + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $4 + i32.shl + i32.const -1 + i32.xor + i32.and + i32.store + end + end + end + ) + (func $~lib/rt/tlsf/insertBlock (; 15 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + (local $10 i32) + (local $11 i32) + (local $12 i32) + (local $13 i32) + local.get $1 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 205 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 207 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.set $3 + local.get $3 + i32.const 16 + i32.add + local.get $3 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + local.get $5 + i32.const 1 + i32.and + if + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $5 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $3 + local.get $3 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $4 + call $~lib/rt/tlsf/removeBlock + local.get $1 + local.get $2 + i32.const 3 + i32.and + local.get $3 + i32.or + local.tee $2 + i32.store + local.get $1 + local.set $6 + local.get $6 + i32.const 16 + i32.add + local.get $6 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $4 + local.get $4 + i32.load + local.set $5 + end + end + local.get $2 + i32.const 2 + i32.and + if + local.get $1 + local.set $6 + local.get $6 + i32.const 4 + i32.sub + i32.load + local.set $6 + local.get $6 + i32.load + local.set $3 + local.get $3 + i32.const 1 + i32.and + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 228 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.add + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.set $7 + local.get $7 + i32.const 1073741808 + i32.lt_u + if + local.get $0 + local.get $6 + call $~lib/rt/tlsf/removeBlock + local.get $6 + local.get $3 + i32.const 3 + i32.and + local.get $7 + i32.or + local.tee $2 + i32.store + local.get $6 + local.set $1 + end + end + local.get $4 + local.get $5 + i32.const 2 + i32.or + i32.store + local.get $2 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.set $8 + local.get $8 + i32.const 16 + i32.ge_u + if (result i32) + local.get $8 + i32.const 1073741808 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 243 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.add + local.get $8 + i32.add + local.get $4 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 244 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $4 + i32.const 4 + i32.sub + local.get $1 + i32.store + local.get $8 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $9 + local.get $8 + i32.const 4 + i32.shr_u + local.set $10 + else + i32.const 31 + local.get $8 + i32.clz + i32.sub + local.set $9 + local.get $8 + local.get $9 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $10 + local.get $9 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $9 + end + local.get $9 + i32.const 23 + i32.lt_u + if (result i32) + local.get $10 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 260 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $7 + local.get $9 + local.set $3 + local.get $10 + local.set $6 + local.get $7 + local.get $3 + i32.const 4 + i32.shl + local.get $6 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $11 + local.get $1 + i32.const 0 + i32.store offset=16 + local.get $1 + local.get $11 + i32.store offset=20 + local.get $11 + if + local.get $11 + local.get $1 + i32.store offset=16 + end + local.get $0 + local.set $12 + local.get $9 + local.set $7 + local.get $10 + local.set $3 + local.get $1 + local.set $6 + local.get $12 + local.get $7 + i32.const 4 + i32.shl + local.get $3 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $0 + local.get $0 + i32.load + i32.const 1 + local.get $9 + i32.shl + i32.or + i32.store + local.get $0 + local.set $13 + local.get $9 + local.set $12 + local.get $0 + local.set $3 + local.get $9 + local.set $6 + local.get $3 + local.get $6 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 1 + local.get $10 + i32.shl + i32.or + local.set $7 + local.get $13 + local.get $12 + i32.const 2 + i32.shl + i32.add + local.get $7 + i32.store offset=4 + ) + (func $~lib/rt/tlsf/addMemory (; 16 ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + local.get $2 + i32.le_u + if (result i32) + local.get $1 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + if (result i32) + local.get $2 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 386 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + local.set $4 + i32.const 0 + local.set $5 + local.get $4 + if + local.get $1 + local.get $4 + i32.const 16 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 396 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 16 + i32.sub + local.get $4 + i32.eq + if + local.get $1 + i32.const 16 + i32.sub + local.set $1 + local.get $4 + i32.load + local.set $5 + else + nop + end + else + local.get $1 + local.get $0 + i32.const 1572 + i32.add + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 408 + i32.const 4 + call $~lib/builtins/abort + unreachable + end + end + local.get $2 + local.get $1 + i32.sub + local.set $6 + local.get $6 + i32.const 48 + i32.lt_u + if + i32.const 0 + return + end + local.get $6 + i32.const 16 + i32.const 1 + i32.shl + i32.sub + local.set $7 + local.get $1 + local.set $8 + local.get $8 + local.get $7 + i32.const 1 + i32.or + local.get $5 + i32.const 2 + i32.and + i32.or + i32.store + local.get $8 + i32.const 0 + i32.store offset=16 + local.get $8 + i32.const 0 + i32.store offset=20 + local.get $1 + local.get $6 + i32.add + i32.const 16 + i32.sub + local.set $4 + local.get $4 + i32.const 0 + i32.const 2 + i32.or + i32.store + local.get $0 + local.set $9 + local.get $4 + local.set $3 + local.get $9 + local.get $3 + i32.store offset=1568 + local.get $0 + local.get $8 + call $~lib/rt/tlsf/insertBlock + i32.const 1 + ) + (func $~lib/rt/tlsf/maybeInitialize (; 17 ;) (result i32) + (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) + global.get $~lib/rt/tlsf/ROOT + local.set $0 + local.get $0 + i32.eqz + if + global.get $~lib/heap/__heap_base + i32.const 15 + i32.add + i32.const -16 + i32.and + local.set $1 + memory.size + local.set $2 + local.get $1 + 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 $3 + local.get $3 + local.get $2 + i32.gt_s + if (result i32) + local.get $3 + local.get $2 + i32.sub + memory.grow + i32.const 0 + i32.lt_s + else + i32.const 0 + end + if + unreachable + end + local.get $1 + local.set $0 + local.get $0 + i32.const 0 + i32.store + local.get $0 + local.set $5 + i32.const 0 + local.set $4 + local.get $5 + local.get $4 + i32.store offset=1568 + i32.const 0 + local.set $5 + loop $for-loop|0 + local.get $5 + i32.const 23 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $0 + local.set $8 + local.get $5 + local.set $7 + i32.const 0 + local.set $6 + local.get $8 + local.get $7 + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=4 + i32.const 0 + local.set $8 + loop $for-loop|1 + local.get $8 + i32.const 16 + i32.lt_u + local.set $7 + local.get $7 + if + local.get $0 + local.set $11 + local.get $5 + local.set $10 + local.get $8 + local.set $9 + i32.const 0 + local.set $6 + local.get $11 + local.get $10 + i32.const 4 + i32.shl + local.get $9 + i32.add + i32.const 2 + i32.shl + i32.add + local.get $6 + i32.store offset=96 + local.get $8 + i32.const 1 + i32.add + local.set $8 + br $for-loop|1 + end + end + local.get $5 + i32.const 1 + i32.add + local.set $5 + br $for-loop|0 + end + end + local.get $0 + local.get $1 + i32.const 1572 + i32.add + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + memory.size + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + local.get $0 + global.set $~lib/rt/tlsf/ROOT + end + local.get $0 + ) + (func $~lib/rt/tlsf/prepareSize (; 18 ;) (param $0 i32) (result i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.const 1073741808 + i32.ge_u + if + i32.const 112 + i32.const 64 + i32.const 457 + i32.const 29 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.const 15 + i32.add + i32.const 15 + i32.const -1 + i32.xor + i32.and + local.tee $1 + i32.const 16 + local.tee $2 + local.get $1 + local.get $2 + i32.gt_u + select + ) + (func $~lib/rt/tlsf/searchBlock (; 19 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + (local $8 i32) + (local $9 i32) + local.get $1 + i32.const 256 + i32.lt_u + if + i32.const 0 + local.set $2 + local.get $1 + i32.const 4 + i32.shr_u + local.set $3 + else + local.get $1 + i32.const 536870904 + i32.lt_u + if (result i32) + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.add + i32.const 1 + i32.sub + else + local.get $1 + end + local.set $4 + i32.const 31 + local.get $4 + i32.clz + i32.sub + local.set $2 + local.get $4 + local.get $2 + i32.const 4 + i32.sub + i32.shr_u + i32.const 1 + i32.const 4 + i32.shl + i32.xor + local.set $3 + local.get $2 + i32.const 8 + i32.const 1 + i32.sub + i32.sub + local.set $2 + end + local.get $2 + i32.const 23 + i32.lt_u + if (result i32) + local.get $3 + i32.const 16 + i32.lt_u + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 338 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $5 + local.get $2 + local.set $4 + local.get $5 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + i32.const 0 + i32.const -1 + i32.xor + local.get $3 + i32.shl + i32.and + local.set $6 + i32.const 0 + local.set $7 + local.get $6 + i32.eqz + if + local.get $0 + i32.load + i32.const 0 + i32.const -1 + i32.xor + local.get $2 + i32.const 1 + i32.add + i32.shl + i32.and + local.set $5 + local.get $5 + i32.eqz + if + i32.const 0 + local.set $7 + else + local.get $5 + i32.ctz + local.set $2 + local.get $0 + local.set $8 + local.get $2 + local.set $4 + local.get $8 + local.get $4 + i32.const 2 + i32.shl + i32.add + i32.load offset=4 + local.set $6 + local.get $6 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 351 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + else + local.get $0 + local.set $9 + local.get $2 + local.set $8 + local.get $6 + i32.ctz + local.set $4 + local.get $9 + local.get $8 + i32.const 4 + i32.shl + local.get $4 + i32.add + i32.const 2 + i32.shl + i32.add + i32.load offset=96 + local.set $7 + end + local.get $7 + ) + (func $~lib/rt/pure/markGray (; 20 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.ne + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 268435456 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 2 + call $~lib/rt/__visit_members + end + ) + (func $~lib/rt/tlsf/freeBlock (; 21 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + local.get $1 + i32.load + local.set $2 + local.get $2 + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 569 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + local.get $2 + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $1 + call $~lib/rt/tlsf/insertBlock + local.get $1 + call $~lib/rt/rtrace/onfree + ) + (func $~lib/rt/pure/scanBlack (; 22 ;) (param $0 i32) + local.get $0 + local.get $0 + i32.load offset=4 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 4 + call $~lib/rt/__visit_members + ) + (func $~lib/rt/pure/scan (; 23 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 268435456 + i32.eq + if + local.get $1 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + if + local.get $0 + call $~lib/rt/pure/scanBlack + else + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 536870912 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 3 + call $~lib/rt/__visit_members + end + end + ) + (func $~lib/rt/pure/collectWhite (; 24 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 1879048192 + i32.and + i32.const 536870912 + i32.eq + if (result i32) + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + else + i32.const 0 + end + if + local.get $0 + local.get $1 + i32.const 1879048192 + i32.const -1 + i32.xor + i32.and + i32.const 0 + i32.or + i32.store offset=4 + local.get $0 + i32.const 16 + i32.add + i32.const 5 + call $~lib/rt/__visit_members + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + end + ) + (func $~lib/rt/pure/__collect (; 25 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + local.get $0 + local.set $1 + local.get $1 + local.set $2 + global.get $~lib/rt/pure/CUR + local.set $3 + loop $for-loop|0 + local.get $2 + local.get $3 + i32.lt_u + local.set $4 + local.get $4 + if + local.get $2 + i32.load + local.set $5 + local.get $5 + i32.load offset=4 + local.set $6 + local.get $6 + i32.const 1879048192 + i32.and + i32.const 805306368 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + else + i32.const 0 + end + if + local.get $5 + call $~lib/rt/pure/markGray + local.get $1 + local.get $5 + i32.store + local.get $1 + i32.const 4 + i32.add + local.set $1 + else + local.get $6 + i32.const 1879048192 + i32.and + i32.const 0 + i32.eq + if (result i32) + local.get $6 + i32.const 268435455 + i32.and + i32.eqz + else + i32.const 0 + end + if + global.get $~lib/rt/tlsf/ROOT + local.get $5 + call $~lib/rt/tlsf/freeBlock + else + local.get $5 + local.get $6 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + end + end + local.get $2 + i32.const 4 + i32.add + local.set $2 + br $for-loop|0 + end + end + local.get $1 + global.set $~lib/rt/pure/CUR + local.get $0 + local.set $3 + loop $for-loop|1 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + call $~lib/rt/pure/scan + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|1 + end + end + local.get $0 + local.set $3 + loop $for-loop|2 + local.get $3 + local.get $1 + i32.lt_u + local.set $2 + local.get $2 + if + local.get $3 + i32.load + local.set $4 + local.get $4 + local.get $4 + i32.load offset=4 + i32.const -2147483648 + i32.const -1 + i32.xor + i32.and + i32.store offset=4 + local.get $4 + call $~lib/rt/pure/collectWhite + local.get $3 + i32.const 4 + i32.add + local.set $3 + br $for-loop|2 + end + end + local.get $0 + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/tlsf/growMemory (; 26 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + local.get $1 + i32.const 536870904 + i32.lt_u + if + local.get $1 + i32.const 1 + i32.const 27 + local.get $1 + i32.clz + i32.sub + i32.shl + i32.const 1 + i32.sub + i32.add + local.set $1 + end + memory.size + local.set $2 + local.get $1 + i32.const 16 + local.get $2 + i32.const 16 + i32.shl + i32.const 16 + i32.sub + local.get $0 + local.set $3 + local.get $3 + i32.load offset=1568 + i32.ne + i32.shl + i32.add + local.set $1 + local.get $1 + i32.const 65535 + i32.add + i32.const 65535 + i32.const -1 + i32.xor + i32.and + i32.const 16 + i32.shr_u + local.set $4 + local.get $2 + local.tee $3 + local.get $4 + local.tee $5 + local.get $3 + local.get $5 + i32.gt_s + select + local.set $6 + local.get $6 + memory.grow + i32.const 0 + i32.lt_s + if + local.get $4 + memory.grow + i32.const 0 + i32.lt_s + if + unreachable + end + end + memory.size + local.set $7 + local.get $0 + local.get $2 + i32.const 16 + i32.shl + local.get $7 + i32.const 16 + i32.shl + call $~lib/rt/tlsf/addMemory + drop + ) + (func $~lib/rt/tlsf/prepareBlock (; 27 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + local.get $1 + i32.load + local.set $3 + local.get $2 + i32.const 15 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 365 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 3 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.sub + local.set $4 + local.get $4 + i32.const 32 + i32.ge_u + if + local.get $1 + local.get $2 + local.get $3 + i32.const 2 + i32.and + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.get $2 + i32.add + local.set $5 + local.get $5 + local.get $4 + i32.const 16 + i32.sub + i32.const 1 + i32.or + i32.store + local.get $0 + local.get $5 + call $~lib/rt/tlsf/insertBlock + else + local.get $1 + local.get $3 + i32.const 1 + i32.const -1 + i32.xor + i32.and + i32.store + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + local.get $1 + local.set $5 + local.get $5 + i32.const 16 + i32.add + local.get $5 + i32.load + i32.const 3 + i32.const -1 + i32.xor + i32.and + i32.add + i32.load + i32.const 2 + i32.const -1 + i32.xor + i32.and + i32.store + end + ) + (func $~lib/rt/tlsf/allocateBlock (; 28 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + (local $3 i32) + global.get $~lib/rt/tlsf/collectLock + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 490 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $1 + call $~lib/rt/tlsf/prepareSize + local.set $2 + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + global.get $~lib/gc/gc.auto + if + i32.const 1 + global.set $~lib/rt/tlsf/collectLock + call $~lib/rt/pure/__collect + i32.const 0 + global.set $~lib/rt/tlsf/collectLock + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 502 + i32.const 19 + call $~lib/builtins/abort + unreachable + end + end + else + local.get $0 + local.get $2 + call $~lib/rt/tlsf/growMemory + local.get $0 + local.get $2 + call $~lib/rt/tlsf/searchBlock + local.set $3 + local.get $3 + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 507 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + end + end + local.get $3 + i32.load + i32.const -4 + i32.and + local.get $2 + i32.ge_u + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 510 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $3 + i32.const 0 + i32.store offset=4 + local.get $3 + local.get $1 + i32.store offset=12 + local.get $0 + local.get $3 + call $~lib/rt/tlsf/removeBlock + local.get $0 + local.get $3 + local.get $2 + call $~lib/rt/tlsf/prepareBlock + local.get $3 + call $~lib/rt/rtrace/onalloc + local.get $3 + ) + (func $~lib/rt/tlsf/__alloc (; 29 ;) (param $0 i32) (param $1 i32) (result i32) + (local $2 i32) + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + call $~lib/rt/tlsf/allocateBlock + local.set $2 + local.get $2 + local.get $1 + i32.store offset=8 + local.get $2 + i32.const 16 + i32.add + ) + (func $~lib/rt/pure/increment (; 30 ;) (param $0 i32) + (local $1 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const -268435456 + i32.and + local.get $1 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 104 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $0 + local.get $1 + i32.const 1 + i32.add + i32.store offset=4 + local.get $0 + call $~lib/rt/rtrace/onincrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 107 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + ) + (func $~lib/rt/pure/__retain (; 31 ;) (param $0 i32) (result i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/increment + end + local.get $0 + ) + (func $while/Ref#constructor (; 32 ;) (param $0 i32) (result i32) + local.get $0 + i32.eqz + if + i32.const 0 + i32.const 3 + call $~lib/rt/tlsf/__alloc + call $~lib/rt/pure/__retain + local.set $0 + end + local.get $0 + ) + (func $~lib/rt/__typeinfo (; 33 ;) (param $0 i32) (result i32) + (local $1 i32) + global.get $~lib/rt/__rtti_base + local.set $1 + local.get $0 + local.get $1 + i32.load + i32.gt_u + if + i32.const 224 + i32.const 288 + i32.const 22 + i32.const 27 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.const 4 + i32.add + local.get $0 + i32.const 8 + i32.mul + i32.add + i32.load + ) + (func $~lib/util/memory/memcpy (; 34 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + loop $while-continue|0 + local.get $2 + if (result i32) + local.get $1 + i32.const 3 + i32.and + else + i32.const 0 + end + local.set $5 + local.get $5 + if + local.get $0 + local.tee $6 + i32.const 1 + i32.add + local.set $0 + local.get $6 + local.get $1 + local.tee $6 + i32.const 1 + i32.add + local.set $1 + local.get $6 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + br $while-continue|0 + end + end + local.get $0 + i32.const 3 + i32.and + i32.const 0 + i32.eq + if + loop $while-continue|1 + local.get $2 + i32.const 16 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.get $1 + i32.const 8 + i32.add + i32.load + i32.store + local.get $0 + i32.const 12 + i32.add + local.get $1 + i32.const 12 + i32.add + i32.load + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|1 + end + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.get $1 + i32.const 4 + i32.add + i32.load + i32.store + local.get $0 + i32.const 8 + i32.add + local.set $0 + local.get $1 + i32.const 8 + i32.add + local.set $1 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.get $1 + i32.load + i32.store + local.get $0 + i32.const 4 + i32.add + local.set $0 + local.get $1 + i32.const 4 + i32.add + local.set $1 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.get $1 + i32.load16_u + i32.store16 + local.get $0 + i32.const 2 + i32.add + local.set $0 + local.get $1 + i32.const 2 + i32.add + local.set $1 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + return + end + local.get $2 + i32.const 32 + i32.ge_u + if + block $break|2 + block $case2|2 + block $case1|2 + block $case0|2 + local.get $0 + i32.const 3 + i32.and + local.set $5 + local.get $5 + i32.const 1 + i32.eq + br_if $case0|2 + local.get $5 + i32.const 2 + i32.eq + br_if $case1|2 + local.get $5 + i32.const 3 + i32.eq + br_if $case2|2 + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 3 + i32.sub + local.set $2 + loop $while-continue|3 + local.get $2 + i32.const 17 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 1 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 5 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 9 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 24 + i32.shr_u + local.get $4 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 13 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 24 + i32.shr_u + local.get $3 + i32.const 8 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|3 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 2 + i32.sub + local.set $2 + loop $while-continue|4 + local.get $2 + i32.const 18 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 2 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 6 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 10 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 16 + i32.shr_u + local.get $4 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 14 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 16 + i32.shr_u + local.get $3 + i32.const 16 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|4 + end + end + br $break|2 + end + local.get $1 + i32.load + local.set $3 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $2 + i32.const 1 + i32.sub + local.set $2 + loop $while-continue|5 + local.get $2 + i32.const 19 + i32.ge_u + local.set $5 + local.get $5 + if + local.get $1 + i32.const 3 + i32.add + i32.load + local.set $4 + local.get $0 + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 7 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 4 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 11 + i32.add + i32.load + local.set $4 + local.get $0 + i32.const 8 + i32.add + local.get $3 + i32.const 8 + i32.shr_u + local.get $4 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 15 + i32.add + i32.load + local.set $3 + local.get $0 + i32.const 12 + i32.add + local.get $4 + i32.const 8 + i32.shr_u + local.get $3 + i32.const 24 + i32.shl + i32.or + i32.store + local.get $1 + i32.const 16 + i32.add + local.set $1 + local.get $0 + i32.const 16 + i32.add + local.set $0 + local.get $2 + i32.const 16 + i32.sub + local.set $2 + br $while-continue|5 + end + end + br $break|2 + end + end + local.get $2 + i32.const 16 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 8 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 4 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 2 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + local.get $2 + i32.const 1 + i32.and + if + local.get $0 + local.tee $5 + i32.const 1 + i32.add + local.set $0 + local.get $5 + local.get $1 + local.tee $5 + i32.const 1 + i32.add + local.set $1 + local.get $5 + i32.load8_u + i32.store8 + end + ) + (func $~lib/memory/memory.copy (; 35 ;) (param $0 i32) (param $1 i32) (param $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + (local $6 i32) + (local $7 i32) + block $~lib/util/memory/memmove|inlined.0 + local.get $0 + local.set $5 + local.get $1 + local.set $4 + local.get $2 + local.set $3 + local.get $5 + local.get $4 + i32.eq + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $4 + local.get $3 + i32.add + local.get $5 + i32.le_u + if (result i32) + i32.const 1 + else + local.get $5 + local.get $3 + i32.add + local.get $4 + i32.le_u + end + if + local.get $5 + local.get $4 + local.get $3 + call $~lib/util/memory/memcpy + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $4 + i32.lt_u + if + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|0 + local.get $5 + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $3 + i32.const 1 + i32.sub + local.set $3 + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + br $while-continue|0 + end + end + loop $while-continue|1 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $5 + local.get $4 + i64.load + i64.store + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + i32.const 8 + i32.add + local.set $5 + local.get $4 + i32.const 8 + i32.add + local.set $4 + br $while-continue|1 + end + end + end + loop $while-continue|2 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.tee $7 + i32.const 1 + i32.add + local.set $5 + local.get $7 + local.get $4 + local.tee $7 + i32.const 1 + i32.add + local.set $4 + local.get $7 + i32.load8_u + i32.store8 + local.get $3 + i32.const 1 + i32.sub + local.set $3 + br $while-continue|2 + end + end + else + local.get $4 + i32.const 7 + i32.and + local.get $5 + i32.const 7 + i32.and + i32.eq + if + loop $while-continue|3 + local.get $5 + local.get $3 + i32.add + i32.const 7 + i32.and + local.set $6 + local.get $6 + if + local.get $3 + i32.eqz + if + br $~lib/util/memory/memmove|inlined.0 + end + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|3 + end + end + loop $while-continue|4 + local.get $3 + i32.const 8 + i32.ge_u + local.set $6 + local.get $6 + if + local.get $3 + i32.const 8 + i32.sub + local.set $3 + local.get $5 + local.get $3 + i32.add + local.get $4 + local.get $3 + i32.add + i64.load + i64.store + br $while-continue|4 + end + end + end + loop $while-continue|5 + local.get $3 + local.set $6 + local.get $6 + if + local.get $5 + local.get $3 + i32.const 1 + i32.sub + local.tee $3 + i32.add + local.get $4 + local.get $3 + i32.add + i32.load8_u + i32.store8 + br $while-continue|5 + end + end + end + end + ) + (func $~lib/rt/tlsf/__free (; 36 ;) (param $0 i32) + local.get $0 + i32.const 0 + i32.ne + if (result i32) + local.get $0 + i32.const 15 + i32.and + i32.eqz + else + i32.const 0 + end + i32.eqz + if + i32.const 0 + i32.const 64 + i32.const 593 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + call $~lib/rt/tlsf/maybeInitialize + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/tlsf/freeBlock + ) + (func $~lib/rt/pure/growRoots (; 37 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + (local $5 i32) + global.get $~lib/rt/pure/ROOTS + local.set $0 + global.get $~lib/rt/pure/CUR + local.get $0 + i32.sub + local.set $1 + local.get $1 + i32.const 2 + i32.mul + local.tee $2 + i32.const 64 + i32.const 2 + i32.shl + local.tee $3 + local.get $2 + local.get $3 + i32.gt_u + select + local.set $4 + local.get $4 + i32.const 0 + call $~lib/rt/tlsf/__alloc + local.set $5 + local.get $5 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onfree + local.get $5 + local.get $0 + local.get $1 + call $~lib/memory/memory.copy + local.get $0 + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/rtrace/onalloc + local.get $0 + call $~lib/rt/tlsf/__free + end + local.get $5 + global.set $~lib/rt/pure/ROOTS + local.get $5 + local.get $1 + i32.add + global.set $~lib/rt/pure/CUR + local.get $5 + local.get $4 + i32.add + global.set $~lib/rt/pure/END + ) + (func $~lib/rt/pure/appendRoot (; 38 ;) (param $0 i32) + (local $1 i32) + global.get $~lib/rt/pure/CUR + local.set $1 + local.get $1 + global.get $~lib/rt/pure/END + i32.ge_u + if + call $~lib/rt/pure/growRoots + global.get $~lib/rt/pure/CUR + local.set $1 + end + local.get $1 + local.get $0 + i32.store + local.get $1 + i32.const 4 + i32.add + global.set $~lib/rt/pure/CUR + ) + (func $~lib/rt/pure/decrement (; 39 ;) (param $0 i32) + (local $1 i32) + (local $2 i32) + local.get $0 + i32.load offset=4 + local.set $1 + local.get $1 + i32.const 268435455 + i32.and + local.set $2 + local.get $0 + call $~lib/rt/rtrace/ondecrement + local.get $0 + i32.load + i32.const 1 + i32.and + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 115 + i32.const 13 + call $~lib/builtins/abort + unreachable + end + local.get $2 + i32.const 1 + i32.eq + if + local.get $0 + i32.const 16 + i32.add + i32.const 1 + call $~lib/rt/__visit_members + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + global.get $~lib/rt/tlsf/ROOT + local.get $0 + call $~lib/rt/tlsf/freeBlock + else + local.get $0 + i32.const -2147483648 + i32.const 0 + i32.or + i32.const 0 + i32.or + i32.store offset=4 + end + else + local.get $2 + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 124 + i32.const 15 + call $~lib/builtins/abort + unreachable + end + local.get $0 + i32.load offset=8 + call $~lib/rt/__typeinfo + i32.const 16 + i32.and + i32.eqz + if + local.get $0 + i32.const -2147483648 + i32.const 805306368 + i32.or + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + local.get $1 + i32.const -2147483648 + i32.and + i32.eqz + if + local.get $0 + call $~lib/rt/pure/appendRoot + end + else + local.get $0 + local.get $1 + i32.const 268435455 + i32.const -1 + i32.xor + i32.and + local.get $2 + i32.const 1 + i32.sub + i32.or + i32.store offset=4 + end + end + ) + (func $~lib/rt/pure/__release (; 40 ;) (param $0 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.gt_u + if + local.get $0 + i32.const 16 + i32.sub + call $~lib/rt/pure/decrement + end + ) + (func $while/testRef (; 41 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $while/Ref#constructor + local.set $1 + loop $while-continue|0 + local.get $1 + local.set $2 + local.get $2 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $3 + local.get $1 + local.tee $4 + i32.ne + if + local.get $3 + call $~lib/rt/pure/__retain + local.set $3 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $3 + local.set $1 + else + i32.const 0 + call $while/Ref#constructor + local.set $4 + local.get $1 + call $~lib/rt/pure/__release + local.get $4 + local.set $1 + end + br $while-continue|0 + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 142 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 143 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $while/getRef (; 42 ;) (result i32) + i32.const 0 + call $while/Ref#constructor + ) + (func $while/testRefAutorelease (; 43 ;) + (local $0 i32) + (local $1 i32) + (local $2 i32) + (local $3 i32) + (local $4 i32) + i32.const 0 + local.set $0 + i32.const 0 + call $while/Ref#constructor + local.set $1 + block $while-break|0 + loop $while-continue|0 + call $while/getRef + local.tee $2 + local.set $3 + local.get $2 + call $~lib/rt/pure/__release + local.get $3 + if + local.get $0 + i32.const 1 + i32.add + local.tee $0 + i32.const 10 + i32.eq + if + i32.const 0 + local.tee $2 + local.get $1 + local.tee $4 + i32.ne + if + local.get $2 + call $~lib/rt/pure/__retain + local.set $2 + local.get $4 + call $~lib/rt/pure/__release + end + local.get $2 + local.set $1 + br $while-break|0 + end + br $while-continue|0 + end + end + end + local.get $0 + i32.const 10 + i32.eq + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 162 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + local.get $1 + i32.eqz + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 163 + i32.const 2 + call $~lib/builtins/abort + unreachable + end + i32.const 1 + global.set $while/ran + local.get $1 + call $~lib/rt/pure/__release + ) + (func $start:while (; 44 ;) + i32.const 0 + global.set $while/ran + call $while/testSimple + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 16 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testNested + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 39 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testEmpty + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 51 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testAlwaysTrue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 63 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testAlwaysFalse + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 76 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testAlwaysBreaks + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 88 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testAlwaysReturns + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 100 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testContinue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 113 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testNestedContinue + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 132 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testRef + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 148 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + i32.const 0 + global.set $while/ran + call $while/testRefAutorelease + global.get $while/ran + i32.eqz + if + i32.const 0 + i32.const 32 + i32.const 168 + i32.const 0 + call $~lib/builtins/abort + unreachable + end + ) + (func $~start (; 45 ;) + global.get $~started + if + return + else + i32.const 1 + global.set $~started + end + call $start:while + ) + (func $~lib/rt/pure/__visit (; 46 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + (local $3 i32) + local.get $0 + global.get $~lib/heap/__heap_base + i32.lt_u + if + return + end + local.get $0 + i32.const 16 + i32.sub + local.set $2 + block $break|0 + block $case5|0 + block $case4|0 + block $case3|0 + block $case2|0 + block $case1|0 + block $case0|0 + local.get $1 + local.set $3 + local.get $3 + i32.const 1 + i32.eq + br_if $case0|0 + local.get $3 + i32.const 2 + i32.eq + br_if $case1|0 + local.get $3 + i32.const 3 + i32.eq + br_if $case2|0 + local.get $3 + i32.const 4 + i32.eq + br_if $case3|0 + local.get $3 + i32.const 5 + i32.eq + br_if $case4|0 + br $case5|0 + end + local.get $2 + call $~lib/rt/pure/decrement + br $break|0 + end + local.get $2 + i32.load offset=4 + i32.const 268435455 + i32.and + i32.const 0 + i32.gt_u + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 75 + i32.const 17 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $2 + i32.load offset=4 + i32.const 1 + i32.sub + i32.store offset=4 + local.get $2 + call $~lib/rt/pure/markGray + br $break|0 + end + local.get $2 + call $~lib/rt/pure/scan + br $break|0 + end + local.get $2 + i32.load offset=4 + local.set $3 + local.get $3 + i32.const -268435456 + i32.and + local.get $3 + i32.const 1 + i32.add + i32.const -268435456 + i32.and + i32.eq + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 86 + i32.const 6 + call $~lib/builtins/abort + unreachable + end + local.get $2 + local.get $3 + i32.const 1 + i32.add + i32.store offset=4 + local.get $3 + i32.const 1879048192 + i32.and + i32.const 0 + i32.ne + if + local.get $2 + call $~lib/rt/pure/scanBlack + end + br $break|0 + end + local.get $2 + call $~lib/rt/pure/collectWhite + br $break|0 + end + i32.const 0 + i32.eqz + if + i32.const 0 + i32.const 176 + i32.const 97 + i32.const 24 + call $~lib/builtins/abort + unreachable + end + end + ) + (func $~lib/rt/__visit_members (; 47 ;) (param $0 i32) (param $1 i32) + (local $2 i32) + block $switch$1$default + block $switch$1$case$4 + block $switch$1$case$2 + local.get $0 + i32.const 8 + i32.sub + i32.load + br_table $switch$1$case$2 $switch$1$case$2 $switch$1$case$4 $switch$1$case$2 $switch$1$default + end + return + end + local.get $0 + i32.load + local.tee $2 + if + local.get $2 + local.get $1 + call $~lib/rt/pure/__visit + end + return + end + unreachable ) )